为了学习 ProGuard
的工作原理,我创建了一个小的 Android
示例,向其中添加了一些 jar
,并编写了几行代码,启用 ProGuard
等等。
我的 ProGuard 选项是下一个
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
-optimizationpasses 5
-optimizations !class/unboxing/enum
因此,在将我的 APK 名称反向工程到所有 Object
的方法之后,例如 toString()
、hashCode()
、equals()
保持不变。除了 Object
的方法,Externalizable
方法的名称也保留
那么您是否知道为什么会发生这种情况,是否可以完全解决?
最佳答案
ProGuard 无法混淆并非源自您的类的方法(其中“您的”包括您在其中编译的 JAR/AAR)。
您从框架提供的类中覆盖的任何内容都需要保持完整。否则,框架无法调用这些方法,因为 ProGuard 不会混淆约 15 亿 Android 设备上固件安装的框架类。
关于android - ProGuard 不会混淆对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488737/