2016-11-21 123 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>; 
}