我的设备上Unity应用程序崩溃了。

4
我已创建了一个Unity游戏,包含AdMob服务(插件),当玩家死亡时会触发。在编辑器中测试应用程序时一切正常。但是当我将apk复制到安卓手机上,并在游戏中达到玩家死亡的点时,它会崩溃。
使用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来解决问题。但是“Resolve Client Jars”选项并不存在。所以我尝试从这里安装插件,但它也没有出现。我猜可能与缺少的Jars有关,但我不知道哪些Jars需要添加,如果不能使用Jar resolver怎么办。值得一提的细节是:为了确保编译成功,我不得不安装较旧版本的工具(tools_r25.2.5)。谢谢!

也许你正在调试AdMob时使用了发布密钥。 - Snehal Gongle
https://github.com/googleads/googleads-mobile-unity/issues/549 - Muhammad Faizan Khan
Unity的哪个版本? - Mars
好奇,当您安装最新的Admob时,会出现什么样的错误? - Mars
2个回答

3

很可能您正在使用其他依赖项,这些依赖项与Google Play服务的版本存在冲突。

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

并验证您实现的其他插件是否使用了更新或更旧的Google Play服务、Firebase或任何其他类型的依赖项,这些依赖项在两个不同版本中都存在。

祝好运


2

如果您的项目工作区间中有空格,则Play服务解析器无法正常工作。请从您的项目工作区间中移除空格,然后强制解析jar包。 另一个问题可能是您的项目中缺少dependencies.xml文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接