android - ProGuard 不会混淆对象的方法

标签 android proguard obfuscation

为了学习 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/

相关文章:

android - 用于 Android 的 Mono 中的 JniHandleOwnership

android - 弹出菜单在工具栏中选择的项目

Android Java.Lang Locale Number Format I/O 不对称问题

c# - 我破坏了与 Dotfuscator 的兼容性...请帮助我了解如何

typescript - Visual Studio Code - 缩小和混淆编译的 TypeScript

Android 谷歌地图准确性问题

android - 混淆代码

android - 使用 Kotlin 默认值的 Jackson 反序列化失败

java - 错误 :Execution failed for task ':app:transformClassesAndResourcesWithProguardForDebug'

node.js - 创建闭源 npm 包