在反编译的apk中,出现了一些.java文件,但是有些文件的名称中包含"AudioPlayerActivity$$Lambda$1.java"这样的字符,那么这个"$$Lambda$1"是什么意思呢?
“AudioPlayerActivity$$Lambda$1.java”基本上是在“AudioPlayerActivity.java”内部编写的一个匿名代码块,现在“AudioPlayerActivity.java”可以拥有任意数量的匿名代码块,因此在反编译它时,所有这些块都会按顺序转换为带有数字结尾的单独类。让我们举个例子,我有一个包含一个代码块的HelloWorld.java类。
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
还需要一个匿名块来为按钮添加 clicklistener,代码如下。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
那么在反编译后,我会得到3个类:helloworld.smali、helloworld$1.smali(其中包含runOnUithread的代码)和helloworld$2.smali(其中包含onClickListener的代码)。