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

j2e*_*nue 44 android proguard

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

Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

这个警告似乎可能被切断,而且缺少信息.但它看起来像一个proguard问题,虽然我在构建调试变量时收到此警告.我检查了我的proguard文件,我没有完全匹配的行.我搜索了整个项目.关于根本原因的任何想法?

Aba*_*Aba 22

正如@ arcone1,@ Vincent Mattana的问题评论中提到的并且@random确认,问题已在Android Studio 3.2中得到解决.

来自Google Issue Tracker中问题:

为了澄清,这是来自R8的警告,而不是错误,我们用它来计算遗留多索变体中主dex的类列表.它不会影响输出,也不会导致构建或运行时故障.
我正在修改一个修复程序,将此保留规则更改为"-keep public class*implements java.lang.annotation.Annotation",它在语义上是相同的,并删除警告.

因此,暂时忽略它或与Canary一起前行(由您自行承担风险).

更新:3.2出来了!


T. *_*art 17

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

如果您在项目中找不到它,那么它很可能是依赖的aar文件中包含的消费者Proguard文件的破坏规则.


mri*_*dul 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'
}
Run Code Online (Sandbox Code Playgroud)

参考: https ://developer.android.com/studio/build/multidex

  • 此解决方案在所有情况下都不起作用.我添加了完全相同的multidex gradle,但警告仍然显示 (5认同)