我最近升级了android studio,但我找不到android studio 3.1中报告的以下问题的来源:
Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {
警告似乎被切断了,可能遗漏了信息。但这看起来像是一个前卫问题,尽管我在构建debug变量时收到了这个警告。我检查了我的proguard文件,但我没有找到与之完全匹配的行。我搜索了整个项目。对根本原因有什么想法吗?
发布于 2018-03-29 20:19:01
通配符*
和关键字extends
之间缺少空格。警告本身可能不是来自ProGuard,而是来自谷歌的内置缩略者。
如果您在项目中找不到它,那么它很可能是来自从属aar文件中包含的consumer Proguard文件的违规规则。
发布于 2018-04-10 22:19:28
我从应用程序的build gradle defaultConfig中删除了“gradle true”,然后警告就消失了:
defaultConfig {
...
//multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "Xg"
}
祝你好运)
发布于 2018-05-30 06:30:31
我使用的是类android.support.annotation.Keep
(Android Studio 3.1.2
) ...
-keep @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}
还有更多的标志来控制要保留哪些注释:
-keepattributes RuntimeVisibleAnnotations
-keepattributes AnnotationDefault
-keepattributes *Annotation*
用户可以通过在终端选项卡中运行./gradlew assembleRelease
来获得原始输出。
如果项目的ProGuard配置中没有引用Annotation
,则此警告可能源于某些引用库的“使用者”规则,以便在生成时进行模糊处理。
因此,这似乎是一个无害的警告,可以将其静音:
-dontwarn java.lang.annotation.Annotation
https://stackoverflow.com/questions/49518115
复制相似问题