在 ac.loadClass 中得到一个奇怪的 ClassNotFoundException

Getting a weird ClassNotFoundException in ac.loadClass

我在 Google Play 上有一个活跃的应用程序。我的用户经常遇到崩溃,我不知道在哪里调试。

java.lang.NoClassDefFoundError: 
  at jl.b (jl.java:3)
  at jk.a (jk.java:3)
  at jm.a (jm.java:18)
  at com.google.android.gms.ads.internal.util.ap.a (ap.java:17)
  at ip.a (ip.java:19)
  at ip.run (ip.java:8)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at ac.loadClass (ac.java:4)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at jl.b (jl.java:3)
  at jk.a (jk.java:3)
  at jm.a (jm.java:18)
  at com.google.android.gms.ads.internal.util.ap.a (ap.java:17)
  at ip.a (ip.java:19)
  at ip.run (ip.java:8)

最后一部分让我觉得它与 AdMob 有关

at com.google.android.gms.ads.internal.util.ap.a (ap.java:17)

但我想不出问题到底出在哪里。我的测试设备上的一切似乎都很好,但仍有其他用户遇到这些崩溃。

我已经上传了去混淆文件,但是这些堆栈跟踪都被混淆了。

我目前使用的是 16.0.0 版本的播放服务广告

implementation 'com.google.android.gms:play-services-ads:16.0.0'

正如您所说,这几乎可以肯定是 AdMob 问题。他们可能已经意识到这一点,但对于此类问题,最好联系 AdMob 客户支持,然后他们可以将问题转给 AdMob 开发人员。这不太可能是你的错。

你可以这样做 on this page or in this form

在我们等待 Google 正式修复此问题时,似乎有一个临时解决方法。地图库也受到影响。

只需将此标记放入 Manifest 文件中即可:

<uses-library
      android:name="org.apache.http.legacy"
      android:required="false" />

我试过了,它似乎有效。我打算将此标记为答案,但我会在官方修复程序可用时更新此 post。