使用工具dex2jar和Java Decompiler我检查了两个版本的apk文件,它是在eclipse中使用proguard启用的。 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命令不执行任何操作?
答案 0 :(得分:0)
Android构建过程已经为您指定了所有必需的-injars / -libraryjars / -outjars选项。您永远不应该在配置文件中指定它们;你只会收到很多关于重复课程的警告。
您可以在ProGuard手册中找到有关其用途的说明> Introduction