【问题标题】:Thousands of strange crashes in new Google Play Console version新版 Google Play 管理中心出现数以千计的奇怪崩溃
【发布时间】:2017-10-24 01:18:36
【问题描述】:

最近更新了 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 相关的 RuntimeException (com.google.android.gms.ads.internal.*):

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)

我的问题是:

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

【问题讨论】:

  • 我也遇到了和你第一个一样的问题。我启用了 multidex 并禁用了 pro Guard。你找到解决办法了吗?
  • 您是否禁用了 Proguard?我相信它与 Proguard 密切相关。一个问题:你是否在你的应用中扩展了 Application 类?
  • 是的,我禁用了 pro Guard,还扩展了应用程序中的 Application 类。
  • 查看相关的android源代码,它可能与Application类名相关联,因此扩展它可能会导致问题。但我没有找到解决方法。
  • 我会尝试删除应用程序类并启用专业保护,几天后会告诉你结果。

标签: android crash-reports developer-console google-developer-tools


【解决方案1】:

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

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

祝你好运

埃姆雷

【讨论】:

  • 我不使用 MultiDex,我仔细检查了我的 .so 文件。如果 ProGuard 配置中有问题,我想几乎所有用户都会遇到问题。奇怪的是:a)没有指定类名,b)它发生在很多不同的设备上,但主要发生在三星设备上(S3 占 73%,Galaxy Core LTE 占 10.9%...) - 所以可能是一个错误在三星操作系统中? c) 它提醒我:stackoverflow.com/a/10158241/43051。第二个,谢谢你的信息,我会检查的。
  • 你能贴出你的libs文件夹结构图吗?
  • 我更新了我的问题。关于第二个问题:即使没有安装 Google Play 服务也应该显示广告。它在没有它的模拟器和设备上运行良好。
  • 你在哪里调用系统加载方法来初始化你的c库?也许你应该启用多个dex。
  • 唯一使用的库来自第三方库:github.com/koral--/android-gif-drawable。我没有明确加载它。
【解决方案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)。

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

【讨论】:

  • 是否可以改用“-keep class * extends android.app.Application”?或者类似的东西?
  • 你是对的 -keep class * extends android.app.Application 应该可以解决问题。我很快就会试一试。
  • 够了吗?就这一行?
  • 我更新了我的答案。解决方案并不完美,仍有一些例外。
  • 希望对您有所帮助。谢谢
猜你喜欢
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2016-11-15
  • 2013-09-24
  • 1970-01-01
相关资源
最近更新 更多