我有 Android 框架ObjectAnimator
实例使用的方法。因此它们似乎未使用(它们通过反射使用)并且我添加了SuppressWarnings("unused")
注释,因此 IntelliJ 不会为它们显示警告。但是,ProGuard 仍然剥离它们,我需要明确告诉他不要这样做。这很乏味而且似乎是多余的(违反 DRY)。是否可以将 ProGuard 配置为不删除带有 的方法SuppressWarnings("unused")
?
问问题
583 次
3 回答
4
官方文档中描述了告诉 ProGuard 保留一些类和成员(字段和方法)的选项:http: //proguard.sourceforge.net/manual/usage.html#keepoptions。
您可以使用以下命令告诉 ProGuard 保留类成员:
-keepclassmembers class_specification
您的class_specification
遗嘱如下:
class * {
@java.lang.SuppressWarnings <methods>;
}
所以,在你的proguard.cfg
你应该有这样的东西:
-keepclassmembers class * {
@java.lang.SuppressWarnings <methods>;
}
于 2014-03-15T20:07:08.580 回答
2
很抱歉戳了一个死线程,但我最近遇到了这个问题,发现这是不可能的。因为SuppressWarnings
具有SOURCE
级别保留,所以它不在 Proguard 处理的类文件中(如本 SO 帖子中所述)。我最终改用了 android 支持的@Keep
注释,并使用类似于 Adam 的规则对其进行配置:
-keepclassmembers class * {
@proguard.annotation.Keep <methods>;
}
于 2017-07-18T05:29:48.057 回答
1
我在使用 Dexguard 时遇到过类似的剥离问题。我以一种非常肮脏的方式解决了问题,将其放置在某个地方:
if(System.currentTimeMillis() < 0 ){ //never happens
//..
//TODO directly invoke stripped methods
//..
}
于 2014-03-15T19:41:33.350 回答