dcc icon indicating copy to clipboard operation
dcc copied to clipboard

不支持setOnclickListener(new OnClick(){xxxxx})这种方式

Open qtfreet00 opened this issue 6 years ago • 6 comments

button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                xxxxxxxxxxxxxxx
            }
        });

将如上代码如果写在方法里,如onCreate,转换后其实未实现onClick

qtfreet00 avatar Jan 16 '20 05:01 qtfreet00

你的意思是这段代码被转换成native之后,功能就失效了?

amimo avatar Jan 16 '20 05:01 amimo

应该是参数不支持interface类型的,OnClickListener是个interface

qtfreet00 avatar Jan 16 '20 05:01 qtfreet00

这部分没有转换,运行后将会直接crash

qtfreet00 avatar Jan 16 '20 05:01 qtfreet00

我在测试用例里面测试了map的interface,没没有问题的.方便的话把测试代码发我,我研究下.

amimo avatar Jan 16 '20 05:01 amimo

嘛,前来凑个热闹。

button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                xxxxxxxxxxxxxxx
            }
        });

将如上代码如果写在方法里,如onCreate,转换后其实未实现onClick

DCC支持的,没有问题。我的apk也有类似代码,可以正常运行。

未实现onClick

对于你这种情况(log提示该方法是java方法而不是native方法),如果你开启了混肴,我猜是混肴的锅。

我遇到过类似情况,排查了几个小时,才发现是混肴的原因。 在DCC之前,反编译你的apk,检查要DCC的类的smali文件名是否类似下面格式(句尾的.1.smali、.2.smali)(没错,混淆可以生成这种格式): MainActivity$test.1.smali MainActivity$test.2.smali 这种格式,DCC反编译apk,修改smali方法为native方法,无法处理这种文件名(这算是DCC的一个小bug?)。 如果有这种格式,换个混淆字典就行。

xmhwws avatar Jan 16 '20 07:01 xmhwws