2010-12-17 47 views

回答

24

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

-keep class othercode.** { *; } 

或被含有否定符正则表达式:

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

标准Ant脚本仍然会合并所有引用的罐子在单输出罐子虽然。

+0

我也这样做(但使用keepclasseswithmembers类和保持接口)它在我的情况或多或少罚款,因为单独的.jar文件有不同的包名... – alex2k8 2010-12-22 22:55:48

+1

也认为它保留的名称,代码仍然似乎被处理和混淆。 – alex2k8 2010-12-27 00:03:40

+0

@Eric请在android工作室回复,在'proguard-project.txt'或'proguard-rules.pro'中添加这些行吗? – 2016-06-06 09:16:32

6

在你的配置文件中,将你的jar设置为库罐而不是输入罐。这使他们不受影响。

-libjars <path/to/jars> 
+0

我没有设置输入或库罐。这由平台ant脚本完成。编辑该文件是我试图避免的。 – alex2k8 2010-12-17 23:39:51

1

使用ProGuard Maven插件我那样做

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

<library>true></library> 

导致外部罐子合并成混淆后的最终罐子。但这可能会导致Manifest被覆盖。我还没有想出如何避免这种最好的方式。