未解析的类名proguard规则Android Studio 4.0

未解析的类名proguard规则Android Studio 4.0,android,proguard,android-studio-4.0,Android,Proguard,Android Studio 4.0,当我更新到Android Studio 4.0 proguard rules时,它会显示警告未解析的类名。下面是一个例子,但我确信它仍然在我的项目中警告exist类 -keep class com.squareup.haha.** { *; } -keep class com.squareup.leakcanary.** { *; } 如果我从**更改为*此警告将消失 -keep class com.squareup.haha.* { *; } -keep class com.squareup

当我更新到Android Studio 4.0 proguard rules时,它会显示警告
未解析的类名
。下面是一个例子,但我确信它仍然在我的项目中警告exist类

-keep class com.squareup.haha.** { *; }
-keep class com.squareup.leakcanary.** { *; }
如果我从
**
更改为
*
此警告将消失

-keep class com.squareup.haha.* { *; }
-keep class com.squareup.leakcanary.* { *; }
有人知道这个吗?我应该忽略这个警告还是Android Studio 4.0的bug

更新

我发现这是一个bug,它已经分配了,但还没有解决

7月更新

谷歌团队已经分析并增加了这个bug的隐秘性,它可能与R8的更新版本有关

八月更新

固定在
中为4.2金丝雀9

检查此问题:

`如果右键单击error,则会出现选项“suppress for statement”,在该选项之后,AS会添加注释,例如:

无检查收缩RunResolvedReference -保持类不存在

有了这个注释,“not.existing”就没有错误了`

更换

.**

结果

-keep class com.squareup.haha.*.* { *; }
-keep class com.squareup.leakcanary.*.* { *; }

文件夹及其子文件。我已经对此进行了测试:

com.xx.xx.* { *; }   
com.xx.xx.**.* {*;}   
我猜它可能包含多个文件夹和子文件。我没有测试过这个:

com.xx.xx.* { *; }   
com.xx.xx.**.* {*;}   

这个问题在安卓Studio 4.2金丝雀8中修复。请在此处找到发行说明并检查此问题id#153616200
**
替换为
**
作为解决方法。没有编译错误,并且保留了类

-keep class com.squareup.haha** { *; }
-keep class com.squareup.leakcanary** { *; }

所有这些答案都毫无意义,因为:

LeakCanary被添加为
debugImplementation

  • release
    版本中不存在的类设置规则是没有意义的
  • 混淆
    debug
    构建就更没有意义了

如果您可能需要这些规则中的任何一条,那么您将其添加到了错误的生成类型。

实际上,我们只需要
noinspection
当库发生更改且类不存在,但某些类和模型存在时,但安卓studio 4.0仍然表示未解决此问题。我认为应该是bug,而不是通过“suppress for statement”来修复。这不是解决方案亲爱的,你也可以通过删除单星**替换为*,但这不是解决这个bug的方法。未解决的类名错误现在消失..**表示目录和所有子目录,递归..**仅指目录及其直接子目录。它们不是等价的,这不是一个解决方案。如果交通信号灯挂在红色上,你可以改为挂在橙色或绿色上。没有人会抱怨(一段时间),但这并没有解决。在某些交叉点上,它可能有效,在其他交叉点上,您将导致崩溃。将其添加为答案,并将其标记为已接受