【发布时间】:2011-05-27 09:08:05
【问题描述】:
当我使用 proguard.cfg 导出 android 项目时,所有引用的 .jar 文件也会被混淆。如何从混淆中排除其中一些 .jar?
【问题讨论】:
标签: android obfuscation proguard
当我使用 proguard.cfg 导出 android 项目时,所有引用的 .jar 文件也会被混淆。如何从混淆中排除其中一些 .jar?
【问题讨论】:
标签: android obfuscation proguard
如果您不想编辑 Ant 脚本,您可以在 proguard.cfg 中为这些外部 jar 中的类添加 -keep 选项。例如:
-keep class othercode.** { *; }
或者使用包含否定符的正则表达式:
-keep class !mycode.** { *; }
尽管如此,标准 Ant 脚本仍会将所有引用的 jar 合并到单个输出 jar 中。
【讨论】:
在您的配置文件中,将您的 jar 设置为库 jar,而不是输入 jar。这使他们保持原样。
-libjars <path/to/jars>
【讨论】:
使用 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 被覆盖。我还没有想出如何避免这种最好的方法。
【讨论】: