2016-11-21 124 views
0

該應用程序對庫的依賴關係,它具有類成員ProGuard的保留類成員與「未使用」註釋

@SuppressWarnings("unused") 

註解。當我在做的gradle文件使用proguard-rules.pro通過的,

minifyEnabled true 

,上面標註的成員不是在運行時發現,隨着

NoSuchFieldError error. 

如何保持這些成員從該庫封裝,具有註釋

@SuppressWarnings("unused") 

,通過

"proguard-rules.pro" 
+0

你有類包的名字嗎? –

+0

@masoudvali是的,它有類包名稱,但這是項目的一部分。 – Annada

+0

http://stackoverflow.com/questions/31607727/keep-method-name-from-obfuscator-proguard# add @Keep – muziling

回答

0

嘗試使用這樣的事情對你所使用的特定類:

-dontwarn {package name}.{class name} 
-keep class {package name}.{class name} { *; } 
-keep interface {package name}.{class name} { *; } 
+0

感謝您的建議。 其實我想保留那些用@SuppressWarnings(「未使用」)註解的類成員。無論如何,其他方法不會被混淆刪除。 1.保留使用@SuppressWarnings(「未使用」)註釋的方法 2.也在第一點混淆這些方法 – Annada

2

@SuppressWarnings註釋具有源代碼級的保留,因此不存在在由ProGuard的處理實際的類文件。

如果您在運行時需要這些字段,您將不得不自行添加特定的ProGuard規則。

要保持一個類的所有字段,你可以使用這樣的規則:

-keep class xxx.yyy { 
    <fields>; 
}