【发布时间】:2014-03-18 09:41:36
【问题描述】:
使用工具 dex2jar 和 Java Decompiler 我检查了两个版本的 apk 文件,该文件是在启用了 proguard 的 eclipse 中构建的。使用此命令制作了一个版本的 apk,作为 proguard-project.txt 文件的一部分
-libraryjars /libs/GraphView-3.1.1.jar
在另一个版本的 apk 中,这一行被注释掉了
查看从 apk 转换为 jar 后生成的 apk 文件并查看它们。两个 apk 文件都被混淆了,但是它们完全相同。所以 -libraryjars 命令根本没有效果?为什么混淆后的代码在这两种情况下完全一样?
相比之下,我制作了带有其他修改的两个版本的 apk 文件,它们会产生不同的文件。例如,我将此行添加到 proguard-project.txt 文件中
-keep class com.example.proguardwithgson.MainActivity$TestObject { *; }
它改变了apk的结果代码,TestObject内部类不再被混淆并且清晰可读。
如果 -keep 命令有效,那么为什么 -libraryjars 命令不执行任何操作?
【问题讨论】:
-
您似乎期望使用 -libraryjars 会影响哪些类是否被混淆。这不是 -libraryjars 选项的用途,而是-keep 选项。选项 -libraryjars 仅有助于解析引用的类,而不是在混淆或字节码优化中包含或排除它们。
-
你确定你今天关于这个主题的两个问题不是重复的吗?
标签: java android eclipse proguard