3

Google Play 管理中心的 ANR 和崩溃部分最近进行了更新,以显示更多 ANR 和崩溃(自动从选择加入的用户那里收集)。

我在各种 Android 版本和设备上发现了很多奇怪的新崩溃:

1) 最常见的(每周发生数千次),没有任何类名的 ClassNotFoundException:

java.lang.RuntimeException: 
    at android.app.LoadedApk.makeApplication(LoadedApk.java:509)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4657)
    at android.app.ActivityThread.access$1400(ActivityThread.java:159)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:5419)
    at java.lang.reflect.Method.invokeNative(Method.java:0)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
    at dalvik.system.NativeStart.main(NativeStart.java:0)
Caused by: java.lang.ClassNotFoundException: 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    at android.app.Instrumentation.newApplication(Instrumentation.java:992)
    at android.app.LoadedApk.makeApplication(LoadedApk.java:504)

2)最常见的(数百个),似乎与admob(com.google.android.gms.ads.internal.*)相关的RuntimeException:

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
  at android.app.ActivityThread.access$800(ActivityThread.java:151)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
  at android.os.Handler.dispatchMessage(Handler.java:110)
  at android.os.Looper.loop(Looper.java:193)
  at android.app.ActivityThread.main(ActivityThread.java:5333)
  at java.lang.reflect.Method.invokeNative(Method.java:0)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
  at dalvik.system.NativeStart.main(NativeStart.java:0)
Caused by: java.lang.IllegalStateException: 
  at com.google.android.gms.ads.internal.zzj.a(zzj.java:322)
  at com.google.android.gms.ads.internal.client.ak.onTransact(ak.java:98)
  at android.os.Binder.transact(Binder.java:361)
  at com.google.android.gms.internal.zzet$zza$zza.zza(zzet.java:0)
  at <OR>.zza(zzet.java:0)
  at <OR>.zza(zzet.java:0)
 ...
  at <OR>.zza(zzet.java:0)
  ...

笔记:

  • 堆栈跟踪很长,包含很多方法,行号始终为 0

  • 该应用程序使用 Proguard

  • lib 文件夹架构在此处输入图像描述

3)一堆具有相同类型痕迹的其他异常(很多方法和行号为0)

我的问题是:

  • 您是否遇到过类似的报告?
  • 这些报告真的相关吗?我的意思是,我应该收到更直接的用户反馈。有可能,它们是“无声”的崩溃吗?
  • 是否有任何已知问题/修复?
4

2 回答 2

2

通过将这些行添加到我的 Proguard 文件中,我设法减少了它的出现:

-keep class android.app.Application
-keep class <<MyPackage>>.MyApplication

可以缩短为:

-keep class * extends android.app.Application

根据android源代码,我想它解决了第一个问题。

我还将我的所有库更新到了应该修复第二个的最新版本(Google Play 服务 11.0.2,支持库 25.4.0)。

更新:它不能完全解决问题。我的出现次数要少得多,但仍然有一些。

于 2017-07-05T17:57:17.420 回答
0

第一个错误看起来像是多个 dex 的问题。确保你有正确的实现。或者,如果您在 libs 文件夹中有 .so 文件,请确保它们涵盖所有 cpu 架构。如果仍然发生,请检查您的 proguard 文件

第二个错误与 Google Play 服务版本有关。您的应用需要更高的播放服务版本,而设备没有此功能。它需要更新或确保它也有播放服务。您可以在网上搜索有关 Google Play 服务可用性的更多信息。

祝你好运

埃姆雷

于 2017-05-23T22:14:08.060 回答