2010-12-17 88 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被覆蓋。我還沒有想出如何避免這種最好的方式。