我最近升级了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中得到解决.
为了澄清,这是来自R8的警告,而不是错误,我们用它来计算遗留多索变体中主dex的类列表.它不会影响输出,也不会导致构建或运行时故障.
我正在修改一个修复程序,将此保留规则更改为"-keep public class*implements java.lang.annotation.Annotation",它在语义上是相同的,并删除警告.
因此,暂时忽略它或与Canary一起前行(由您自行承担风险).
更新:3.2出来了!
T. *_*art 17
您缺少通配符*和关键字之间的空格extends.警告本身可能不是来自ProGuard,而是来自谷歌的内置缩小器.
如果您在项目中找不到它,那么它很可能是依赖的aar文件中包含的消费者Proguard文件的破坏规则.
由于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