【发布时间】:2017-10-25 11:43:00
【问题描述】:
本周我开始在我的新应用中测试新的 Firebase 性能。一旦我将 Firebase 用于 Auth 和 DB 等其他功能,我已经将所有软件包更新到最新的 10.2.6 Firebase 版本并遵循所有 pre req 说明。
minAPI 为 19。
我的问题是,在运行 Android 4.4.1 的真实 Galaxy Duos 设备中,应用程序仅在 API 19 中使用 Google Play 服务 10.2.98 崩溃。当应用程序启动时,它在设备中找不到 firebase-perf。
仅在此软件包中发生,在其他设备和更高版本中一切正常,我可以在 Firebase 性能仪表板中看到数据。
提示?
下面的堆栈跟踪
问候,
Process: com.mobilecodelabs.fb.trampo, PID: 2727
java.lang.RuntimeException: Unable to get provider com.google.firebase.perf.provider.FirebasePerfProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.perf.provider.FirebasePerfProvider" on path: DexPathList[[zip file "/data/app/com.mobilecodelabs.fb.trampo-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.mobilecodelabs.fb.trampo-2, /vendor/lib, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:4793)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.perf.provider.FirebasePerfProvider" on path: DexPathList[[zip file "/data/app/com.mobilecodelabs.fb.trampo-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.mobilecodelabs.fb.trampo-2, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.ActivityThread.installProvider(ActivityThread.java:4778)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
在继续之前提示用户更新 Google Play 服务?从 Google Play 管理中心将设备列入黑名单以阻止下载?
-
它仍在开发中。我可以满足您的两个建议,但奇怪的是 Firebase 文档需要最低版本 10.2.6 而设备版本更高 10.2.98。
-
哦,如果您是开发人员,您不能确定问题出在设备或您的实现上(在某些情况下可能需要进行自定义调整)。或者您使用过一些在线服务在数百台设备上进行了测试?
-
非常similar looking stack traces(尽管对于不同的缺失类)已通过启用Multidex 得到纠正。从您之前的评论(“10 个 Firebase 包”)来看,您的应用可能非常大。尝试使用APK Analyzer 看看是否需要 Multidex。
-
谢谢@BobSnyder。我解决了这个问题,但我承认我不明白解决方案:-)。我正在使用“@AddTrace”指令来检测我的代码。在 APK Analyzer 中,我看到使用了 AddTrace,但没有使用其他名为 AppTraceStart。我更改了我的代码并删除了“@AddTrace”指令并开始使用带有 .start() 等的 Trace 类。由于某种原因,它也在 API 19 和其他版本中工作。以后我会做更多的测试。
标签: android firebase firebase-performance