我们在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
07-26 09:28:55.991 3166-29939 /? E / android.os.Debug:ro.product_ship = true
答案 0 :(得分:1)
我通过将我的android项目从Eclipse迁移到Android Studio遇到了类似的问题。我的根本原因是,即使Google Analytics库包含在项目中,项目也缺少Google服务库。
我按照Android studio的Google Analytics设置修复了问题:https://developers.google.com/analytics/devguides/collection/android/v4/
主要是这些步骤:
Gradle的Google服务插件解析配置信息 来自google-services.json文件。将插件添加到项目中 更新您的顶级build.gradle和您的应用级build.gradle 文件如下:
将依赖项添加到项目级build.gradle:
nnoremap <c-z> :u<CR> " Avoid using this** inoremap <c-z> <c-o>:u<CR>
将插件添加到应用级build.gradle的底部:
classpath 'com.google.gms:google-services:3.0.0'
现在,您需要为Google Play服务添加依赖项。内 你的应用的build.gradle添加:
apply plugin: 'com.google.gms.google-services'