ProGuard的保留类成员与“未使用”注释
问题描述:
该应用程序对库的依赖关系,它具有类成员ProGuard的保留类成员与“未使用”注释
@SuppressWarnings("unused")
注解。当我在做的gradle文件使用proguard-rules.pro通过的,
minifyEnabled true
,上面标注的成员不是在运行时发现,随着
NoSuchFieldError error.
如何保持这些成员从该库封装,具有注释
@SuppressWarnings("unused")
,通过
"proguard-rules.pro"
答
尝试使用这样的事情对你所使用的特定类:
-dontwarn {package name}.{class name}
-keep class {package name}.{class name} { *; }
-keep interface {package name}.{class name} { *; }
+0
感谢您的建议。 其实我想保留那些用@SuppressWarnings(“未使用”)注解的类成员。无论如何,其他方法不会被混淆删除。 1.保留使用@SuppressWarnings(“未使用”)注释的方法 2.也在第一点混淆这些方法 – Annada
答
的@SuppressWarnings
注释具有源代码级的保留,因此不存在在由ProGuard的处理实际的类文件。
如果您在运行时需要这些字段,您将不得不自行添加特定的ProGuard规则。
要保持一个类的所有字段,你可以使用这样的规则:
-keep class xxx.yyy {
<fields>;
}
你有类包的名字吗? –
@masoudvali是的,它有类包名称,但这是项目的一部分。 – Annada
http://stackoverflow.com/questions/31607727/keep-method-name-from-obfuscator-proguard# add @Keep – muziling