Android 自sdk';s更新

Android 自sdk';s更新,android,admob,classnotfoundexception,noclassdeffounderror,android-9.0-pie,Android,Admob,Classnotfoundexception,Noclassdeffounderror,Android 9.0 Pie,我的wapp正在编译并以api 27为目标,使用的是早期版本的firebase ads。现在,在更新应用程序并编译并以api 28为目标,使用每个sdk的最新版本后,包括firebase ads(与admob相同),也使用R8而不是proguard进行编译,我在google play控制台崩溃部分遇到了很多类似的例外情况: java.lang.NoClassDefFoundError: at gk.b (gk.java:3) at gl.a (gl.java:3) at gn.a

我的wapp正在编译并以api 27为目标,使用的是早期版本的firebase ads。现在,在更新应用程序并编译并以api 28为目标,使用每个sdk的最新版本后,包括firebase ads(与admob相同),也使用R8而不是proguard进行编译,我在google play控制台崩溃部分遇到了很多类似的例外情况:

java.lang.NoClassDefFoundError: 
  at gk.b (gk.java:3)
  at gl.a (gl.java:3)
  at gn.a (gn.java:18)
  at com.google.android.gms.ads.internal.util.ar.a (ar.java:5)
  at fo.a (fo.java:19)
  at fo.run (fo.java:8)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:171)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at ab.loadClass (ab.java:4)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at gk.b (gk.java:3)
  at gl.a (gl.java:3)
  at gn.a (gn.java:18)
  at com.google.android.gms.ads.internal.util.ar.a (ar.java:5)
  at fo.a (fo.java:19)
  at fo.run (fo.java:8)
我不知道为什么会混淆,因为我上传了映射文件,可能是因为较新的android studio版本使用R8而不是proguard

一些用户发表了不好的评论,因为他们看到了应用程序更新后的崩溃。我的任何设备都无法使应用程序崩溃

据报道,小米米8和OnePlus 5T设备发生了碰撞,但肯定会更多


问题是什么?

一种解决方案是在build.gardle配置中禁用
minifyEnabled
(代码收缩、模糊和优化)和
shrinkResources
字段

buildTypes {
    release {
        minifyEnabled false
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
我认为这是由于minifyEnabled代码收缩(重命名类名称)造成的

由于删除未使用的资源需要启用未使用的代码收缩,因此也必须禁用收缩资源