无法实例化接收器首先运行

Has*_*ouf 7 android google-analytics unity-game-engine

我们有一个在Unity上开发的游戏,我们在游戏中使用谷歌分析,游戏构建和运行顺利,没有任何错误

我们将apk上传到Play商店进行beta测试,第一次运行应用程序时崩溃,第二次运行完美,这种情况仅适用于全新安装,更新游戏的用户不会遇到此错误.

我们在具有不同Android版本的5个不同设备上具有相同的行为

我在logcat中捕获了错误,我对这个错误很熟悉,通常你会错过一个库或者什么东西,但是应用程序在构建时运行得很好,只有新安装不起作用!

我甚至从Play商店下载了应用程序,将apk拉到我的电脑上,再次使用adb安装了应用程序,它并没有崩溃!

这是错误的日志:

java.lang.Error: FATAL EXCEPTION [main]
                                               Unity version     : 5.2.5f1
                                               Device model      : samsung GT-I9500
                                               Device fingerprint: samsung/ja3gxx/ja3g:5.0.1/LRX22C/I9500XXUHOH6:user/release-keys

                                               Caused by: java.lang.RuntimeException: Unable to instantiate receiver com.google.android.gms.analytics.CampaignTrackingReceiver: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.analytics.CampaignTrackingReceiver" on path: DexPathList[[zip file "/data/app/com.remalit.kammelna-1/base.apk"],nativeLibraryDirectories=[/data/app/com.remalit.kammelna-1/lib/arm, /vendor/lib, /system/lib]]
                                                   at android.app.ActivityThread.handleReceiver(ActivityThread.java:2974)
                                                   at android.app.ActivityThread.access$1800(ActivityThread.java:177)
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1525)
                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                   at android.os.Looper.loop(Looper.java:145)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5942)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
                                                Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.analytics.CampaignTrackingReceiver" on path: DexPathList[[zip file "/data/app/com.remalit.kammelna-1/base.apk"],nativeLibraryDirectories=[/data/app/com.remalit.kammelna-1/lib/arm, /vendor/lib, /system/lib]]
                                                   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                   at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                   at android.app.ActivityThread.handleReceiver(ActivityThread.java:2969)
                                                   at android.app.ActivityThread.access$1800(ActivityThread.java:177) 
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1525) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                   at android.os.Looper.loop(Looper.java:145) 
                                                   at android.app.ActivityThread.main(ActivityThread.java:5942) 
                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                   at java.lang.reflect.Method.invoke(Method.java:372) 
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 
                                                Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.analytics.CampaignTrackingReceiver
                                                   at java.lang.Class.classForName(Native Method)
                                                   at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                   at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                                   at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                        ... 11 more
                                                Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
Run Code Online (Sandbox Code Playgroud)

07-26 09:28:55.991 3166-29939 /?E/android.os.Debug:ro.product_ship = true

mar*_*wjj 1

我在将 Android 项目从 Eclipse 迁移到 Android Studio 时遇到了类似的问题。对我来说,根本原因是尽管项目中包含了 Google Analytics 库,但项目中缺少 google services 库。

我遵循 Android Studio 的 Google Analytics 设置并解决了问题: https: //developers.google.com/analytics/devguides/collection/android/v4/

主要是这几个步骤:

Gradle 的 Google 服务插件解析 google-services.json 文件中的配置信息。通过更新顶级 build.gradle 和应用程序级 build.gradle 文件,将插件添加到您的项目中,如下所示:

将依赖项添加到项目级别的 build.gradle 中:

classpath 'com.google.gms:google-services:3.0.0'
Run Code Online (Sandbox Code Playgroud)

将插件添加到应用程序级 build.gradle 的底部:

apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)

现在,您需要添加 Google Play 服务的依赖项。在应用程序的 build.gradle 中添加:

compile 'com.google.android.gms:play-services-analytics:9.2.0'
Run Code Online (Sandbox Code Playgroud)