将 AdMob 与 Google Play 游戏服务一起使用后,游戏在 Android 上崩溃

Game crashes on Android after using AdMob with Google Play Games Services

我使用 unity,google 玩游戏服务(最新版本 0.9.64)在没有 AdMob 的情况下在我的游戏中运行良好,但是当我添加 AdMob(最新版本 3.18.0)时,当我下载我的来自 google 的游戏 play store 并点击那里的打开按钮它显示此错误 "app name has stopped" 但游戏仍然在后台运行我可以正常玩它并且我可以从 phone 小部件打开它而不用该错误,但如果我单击游戏中的按钮以登录 google 播放服务,此错误会再次出现,广告效果很好

我可能会使用最旧版本的 gpgs,如果它是使它工作的唯一方法,但是错误的解决方案是什么 "app name has stopped" 从商店打开游戏时我仍然得到?

Logcat 当使用 gpgs 和 admob 最新版本时,我在下载游戏后直接从 google 游戏商店打开游戏,出现“"app name has stopped" 错误:

    07-09 20:32:20.903: E/Unity(2689): AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.MobileAds
    07-09 20:32:20.903: E/Unity(2689): java.lang.ClassNotFoundException: com.google.android.gms.ads.MobileAds
    07-09 20:32:20.903: E/Unity(2689):  at java.lang.Class.classForName(Native Method)
    07-09 20:32:20.903: E/Unity(2689):  at java.lang.Class.forName(Class.java:308)
    07-09 20:32:20.903: E/Unity(2689):  at java.lang.Class.forName(Class.java:272)
    07-09 20:32:20.903: E/Unity(2689):  at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
    07-09 20:32:20.903: E/Unity(2689):  at com.unity3d.player.UnityPlayer.c(Unknown Source)
    07-09 20:32:20.903: E/Unity(2689):  at com.unity3d.player.UnityPlayer$e.queueIdle(Unknown Source)
    07-09 20:32:20.903: E/Unity(2689):  at android.os.MessageQueue.next(MessageQueue.java:211)
    07-09 20:32:20.903: E/Unity(2689):  at android.os.Looper.loop(Looper.java:122)
    07-09 20:32:20.903: E/Unity(2689):  at com.unity3d.player.UnityPlayer$e.run(Unknown Source)
    07-09 20:32:20.903: E/Unity(2689): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.MobileAds" on path: DexPathList[[zip file "/data/app/com.Kadev.HungryyBears-1/base.apk"],nativeLibraryDirectories=[/data/app/com.Kadev.HungryyBears-1/lib/arm, /vendor/lib, /system/lib]]
    07-09 20:32:20.903: E/Unity(2689):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    07-09 20:32:20.903: E/Unity(2689):  at java.lang.ClassLoader.loadCla

Logcat 当使用 gpgs 和 admob 最新版本时,我单击登录 gpgs 按钮,然后出现相同的错误:

07-09 20:10:12.633: W/Unity(31914): OnLevelWasLoaded was found on Reporter
07-09 20:10:12.633: W/Unity(31914): This message has been deprecated and will be removed in a later version of Unity.
07-09 20:10:12.633: W/Unity(31914): Add a delegate to SceneManager.sceneLoaded instead to get notifications after scene loading has completed
07-09 20:10:12.633: W/Unity(31914):  
07-09 20:10:12.633: W/Unity(31914): (Filename:  Line: 356)
07-09 20:10:18.273: I/Unity(31914): Ads Request Created
07-09 20:10:18.273: I/Unity(31914):  
07-09 20:10:18.273: I/Unity(31914): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
07-09 20:10:25.003: I/Unity(31914): HandleAdLoaded event received
07-09 20:10:25.003: I/Unity(31914):  
07-09 20:10:25.003: I/Unity(31914): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
07-09 20:10:32.073: I/Unity(31914): Starting Auth with token client.
07-09 20:10:32.073: I/Unity(31914):  
07-09 20:10:32.073: I/Unity(31914): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
07-09 20:10:32.103: W/Unity(31914): !!! [Play Games Plugin DLL] 07/09/19 19:10:32 +00:00 WARNING: Creating new PlayGamesPlatform
07-09 20:10:32.103: W/Unity(31914):  
07-09 20:10:32.103: W/Unity(31914): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)

-您可以通过以下instruction.Go到

解决这个问题

资产 -> 播放服务解析器 -> Android -> 强制解析

-如果上面的指令不起作用那么你必须按照下面的指令,

播放器设置 -> 发布设置 -> 将 minify 选项中的发布和调试设置为“None”。

类似问题: https://answers.unity.com/questions/1464677/admob-plugin-error-javalangclassnotfoundexception.html

GPGS 0.9.64 和 AdMob 0.18.0 的解决方案是在播放器设置中检查 proguard 选项,这将在 plugins/android 文件夹中创建一个空的 proguard 文件,在 Visual Studio 中打开它并通过它代码(由 SlobodanNikolic 在 Github 网站 https://github.com/googleads/googleads-mobile-unity/issues/598 中建议):

-dontwarn com.google.vr.ndk.base.DaydreamApi
-keep class com.facebook.** {
   *;
}
-keep class com.google.unity.** {
   *;
}
-keep public class com.google.android.gms.ads.**{
   public *;
}
-keep public class com.google.ads.**{
   public *;
}
-keepattributes *Annotation*
-dontobfuscate

使用上述解决方案,您仍然会看到第一次打开游戏时 google 播放崩溃消息。 但几天后,他们发布了新版本的 AdMob 0.18.1,可以很好地与 GPGS 0.9.64 配合使用,没有这个问题。