【问题标题】:Unity App Crashes on my DeviceUnity 应用程序在我的设备上崩溃
【发布时间】:2017-10-29 10:59:24
【问题描述】:

我创建了一个 Unity 游戏,其中包含 AdMob 服务(插件),当玩家死亡时。在编辑器中测试应用程序时,一切正常。但是,当我将 apk 复制到 Android 手机并到达游戏中玩家死亡的地方时,它会崩溃。

使用 Logcat 我发现了抛出的异常:

10-29 11:46:36.806 29956 29956 E AndroidRuntime: Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/ads/MobileAds;
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at com.google.unity.ads.RewardBasedVideo$1.run(RewardBasedVideo.java:65)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:746)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:95)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:148)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5443)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-29 11:46:36.806 29956 29956 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.MobileAds" on path: DexPathList[[zip file "/data/app/com.comp.game-1/base.apk"],nativeLibraryDirectories=[/data/app/com.comp.game-1/lib/arm, /data/app/com.comp.game-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        ... 8 more
10-29 11:46:36.806 29956 29956 E AndroidRuntime:        Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.ads.MobileAds
10-29 11:46:36.806 29956 29956 E AndroidRuntime:                at java.lang.Class.classForName(Native Method)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
10-29 11:46:36.806 29956 29956 E AndroidRuntime:                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)10-29 11:46:36.806 29956 29956 E AndroidRuntime:                ... 9 more

我尝试过使用 Assets > Play Services Resolver > Android Resolver > Resolve Client Jars。

但是“解决客户端罐子”选项不存在。所以我尝试从here 安装插件,但这也没有让它出现。

我猜这与缺少 jars 有关,但如果不使用 Jar 解析器,我不知道哪些以及如何添加它们。

哦,一个细节可能值得一提:我必须安装旧版本的工具 (tools_r25.2.5) 才能编译。

提前致谢。

【问题讨论】:

标签: android unity3d admob


【解决方案1】:

您很可能正在使用其他一些具有冲突版本的 google play 服务的依赖项。

确保所有依赖项都依赖于相同的版本,

并验证您实现的其他插件不使用新旧版本的 google play services 或 firebase 或任何其他类型的依赖项,即在两个不同版本中不止一次。

祝你好运

【讨论】:

    【解决方案2】:

    如果您的项目工作区有空间,则播放服务解析器不起作用。从项目工作区中删除空格,然后强制解析 jar。 其他问题可能是您的项目中缺少 dependencies.xml 文件。

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多