我最近升级了android studio,但我无法找到android studio 3.1中报道的以下问题的来源:
Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {
警告似乎可能会被切断并且缺少信息。但它看起来像一个proguard问题,虽然我在构建调试变量时收到此警告。我检查了我的proguard文件,我没有完全匹配的行。我搜索了整个项目。关于根本原因的任何想法?
答案 0 :(得分:21)
正如@ arcone1的问题所述,@ Vincent Mattana&由@random确认,此问题已在Android Studio 3.2中解决。
来自issue in Google Issue Tracker:
为了澄清,这是来自R8的警告,而不是错误,我们用它来计算传统multidex变体中主dex的类列表。它不会影响输出,也不会导致构建或运行时故障 我正在修改这个保持规则到#34; -keep public class * implements java.lang.annotation.Annotation&#34 ;,它在语义上是相同的,并删除警告。
所以,暂时忽略它或go bleeding edge with Canary(自担风险)。
更新:3.2 is out!
答案 1 :(得分:17)
您在通配符*
和关键字extends
之间缺少空格。
警告本身可能不是来自ProGuard,而是来自google的内置缩小器。
如果您在项目中找不到它,那么它很可能是依赖的aar文件中包含的消费者Proguard文件的破坏规则。
答案 2 :(得分:9)
由于gradle defaultConfig中的“ multiDexEnabled true” 设置,我遇到了同样的问题。
我通过添加multidex依赖项“实现'com.android.support:multidex:1.0.3'”
解决了此问题android {
defaultConfig {
...
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
答案 3 :(得分:3)
我从app的build gradle defaultConfig中删除了“multiDexEnabled true”,警告消失了:
defaultConfig {
...
//multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "Xg"
}
祝你好运。
答案 4 :(得分:2)
类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
时,此警告可能来自&#34;消费者&#34;某些引用库的规则,在构建时进行模糊处理。
-dontwarn java.lang.annotation.Annotation
答案 5 :(得分:2)
答案 6 :(得分:0)
版本版本: 3.1.4
MultiDex:已启用
就我而言,我忘记为某些字符串资源添加翻译。添加后无错误/警告。
答案 7 :(得分:0)
当您在Google Play商店上载新的升级版本,并且在大多数用户上载后单击保留然后提交时,就会出现此问题。不要单击“保留”,只需上传并提交即可。您的apk文件成功上传,保留文件自动丢弃并设置为停用模式。
记住:请确保您输入的新更新的所有详细信息都不同于旧版本。
答案 8 :(得分:0)
我的gradle版本是我升级到com.android.tools.build:gradle:3.3.2的问题,错误消失了。
答案 9 :(得分:0)
在应用依赖项中使用了实现'com.android.support:support-annotations:27.1.1'
版本根据您的应用兼容版本
进行选择答案 10 :(得分:0)