首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >android studio 3.1警告:规则`-keep public class *扩展java.lang.annotation.Annotation {

android studio 3.1警告:规则`-keep public class *扩展java.lang.annotation.Annotation {
EN

Stack Overflow用户
提问于 2018-03-28 00:31:57
回答 6查看 34.3K关注 0票数 45

我最近升级了android studio,但我找不到android studio 3.1中报告的以下问题的来源:

Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {

警告似乎被切断了,可能遗漏了信息。但这看起来像是一个前卫问题,尽管我在构建debug变量时收到了这个警告。我检查了我的proguard文件,但我没有找到与之完全匹配的行。我搜索了整个项目。对根本原因有什么想法吗?

EN

回答 6

Stack Overflow用户

发布于 2018-03-29 20:19:01

通配符*和关键字extends之间缺少空格。警告本身可能不是来自ProGuard,而是来自谷歌的内置缩略者。

如果您在项目中找不到它,那么它很可能是来自从属aar文件中包含的consumer Proguard文件的违规规则。

票数 17
EN

Stack Overflow用户

发布于 2018-04-10 22:19:28

我从应用程序的build gradle defaultConfig中删除了“gradle true”,然后警告就消失了:

defaultConfig {
    ...

    //multiDexEnabled true
}

dexOptions {
    javaMaxHeapSize "Xg"
}

祝你好运)

票数 3
EN

Stack Overflow用户

发布于 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49518115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档