为了了解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
方法的名称仍然是
所以你知道它为什么会发生,它可以修复吗?
答案 0 :(得分:4)
ProGuard不能混淆那些不属于您的类的方法(其中"您的#34;包括您编译的JAR / AAR)。
您从框架提供的类重写的任何内容都需要保持不变。否则,框架无法调用这些方法,因为ProGuard并未在约15亿台Android设备上混淆固件安装的框架类。