如何通过Proguard(Android项目)从混淆中排除外部.jar?

时间:2010-12-17 21:54:53

标签: android obfuscation proguard

当我使用proguard.cfg导出android项目时,所有引用的.jar文件也会被混淆。如何从混淆中排除一些.jars?

3 个答案:

答案 0 :(得分:25)

如果您不想编辑Ant脚本,可以为这些外部jar中的类添加-keep选项到proguard.cfg。例如:

-keep class othercode.** { *; }

或者使用包含否定符的正则表达式:

-keep class !mycode.** { *; }

标准的Ant脚本仍将合并单个输出jar中的所有引用的jar。

答案 1 :(得分:6)

在配置文件中,将jar设置为库jar而不是输入jar。这使他们保持原状。

-libjars <path/to/jars>

答案 2 :(得分:1)

使用proguard maven插件我就是这样做的

<inclusion>
   <groupId>foo.bar</groupId>
   <artifactId>foo-bar</artifactId>
   <library>true</library>
   <filter>!META-INF/**</filter>
</inclusion>

<library>true</library> 

混淆后导致外部jar合并到最后一个jar中。但这可能会导致Manifest被覆盖。我还没想出如何避免这种最佳方式。