use*_*558 1 obfuscation android build android-studio android-r8
我第一次尝试使用 R8 的 Android Studio 版本来执行混淆和代码优化。
\n正如官方文档所说:
\n\n\n混淆你的代码
\n混淆的目的是通过缩短应用程序\xe2\x80\x99s 类、方法和\n字段的名称来减小应用程序的大小。
\n
我认为R8会重命名所有方法和类名,但是如果我通过“Build -> Analytics APK...”分析APK,我可以读取大部分原始方法和类名。
\n\nContenuti是 中提到的一个 Activity manifest.xml。
mostraView和nascondiView是我创建的方法,它们不在任何库中,它们不扩展任何内容,所以我希望看到它们的名称发生变化。
void mostraView(View v)\n{\n v.setVisibility(View.VISIBLE);\n}\nvoid nascondiView(View v)\n{\n v.setVisibility(View.GONE);\n}\nRun Code Online (Sandbox Code Playgroud)\nR8 的行为正确吗?
\n如何设置 R8 来混淆所有这些,或者至少这两个?
\n多谢!
\n小智 5
原因可能是这个默认规则:
# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
Run Code Online (Sandbox Code Playgroud)
我通过使用诊断开关-printseeds和获得了这一点-printconfiguration。
匹配的方法将 (a) 在扩展 Activity 的类中定义,并且 (b) 具有与模式匹配的方法签名(本质上是任何名称和视图参数)。
但是,我可以重现您的问题的唯一方法是修改访问修饰符以包含public如下内容:
public void mostraView(View v)
{
v.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
注意添加关键字public。因此,假设您发布的代码是逐字的,那么默认的访问修饰符是包朋友,它与模式不匹配。
无论如何,据我所知,能够通过注释的修改重现问题,并根据默认保留提供可能的解释。
请注意,术语“保留”被过度使用,因为它也适用于混淆。
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |