Unity AdMob 插件版本 2.3.1 和 Unity Google Play Game Plugin 0.9.30 不能一起使用

Unity AdMob Plugin version 2.3.1 and Unity Google Play Game Plugin 0.9.30 doesn't work together

我在尝试同时使用最新的 AdMob 插件和最新的 Google Play 游戏插件时遇到问题。他们自己工作 - 我已经测试过这个,如果我只使用 AdMob 插件就会显示广告,并且我可以登录并查看 leaderboards/achievements 当我只使用 Google Play 插件时。

我尝试使用存储库中包含的 Google Play 插件 (GooglePlayGamesPlugin-0.9.21) 的旧版本 - Admob 可以运行但不能运行 Play 服务。我使用了 Google Play 的最新插件 (GooglePlayGamesPlugin-0.9.30) - Play 服务可以正常工作,但如果调用任何方法,Admob 都会使应用程序崩溃。

我注意到最新的 Google Play 插件会自动从 Plugins\Android 文件夹中删除我的 google-play-services_lib。根据 Google 的说明,AdMob 仍然需要此库才能运行。那么为什么他们的其他插件会自动删除这个文件夹?

我进一步调查并发现了删除 Assets\GooglePlayGames\Editor\GPGSUpgrader.cs 文件夹的方法,但将其注释掉只会导致其他错误

                // remove the massive play services client lib
            string clientDir = "Assets/Plugins/Android/google-play-services_lib";
            GPGSUtil.DeleteDirIfExists(clientDir);

作者似乎是故意删除文件夹以减小 apk 大小。这些是我收到的错误:

Error: [Temp/StagingArea/AndroidManifest-main.xml, /Users/User/Documents/myCStuff/GAMES FOLDER/MyNewGame/Temp/StagingArea/android-libraries/play-services-ads-8.4.0/AndroidManifest.xml:10] Trying to merge incompatible /manifest/application/activity[@name=com.google.android.gms.ads.AdActivity] element:

这里有人可以提供帮助吗?

我正在使用 Google Play Games 0.9.30 和 Google 移动广告插件 2.2.1。他们俩一起工作得很好。

首先导入 GPG 插件和 运行 一个设置。然后导入 Admob 插件并从 android sdk

复制 play-services-ads-8.4.0.aar
sdk/extras/google/m2repository/com/google/android/gms/play-services-ads/8.4.0/play-services-ads-8.4.0.aar

到 Assets/Plugins/Android 文件夹。

接下来从 Assets/Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest 打开 Android 清单并注释以下行

<meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
<activity android:name="com.google.android.gms.ads.AdActivity"
   android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

现在我可以成功测试插页式广告和 GPGS。

  1. 我已经能够成功使用最新的 Admob (2.3.1) 和最新的 Google Play Services 插件 (0.9.30)。我通过删除旧 Assets\GoogleMobileAds、Assets\GooglePlayGames 和整个 Assets\Plugins 文件夹重新开始。然后资产 --> 刷新

  2. 我导入了 GooglePlayGamesPlugin-0.9.30 然后 GoogleMobileAds 插件(但我确定顺序无关紧要)。它将重新创建文件夹

  3. 不需要从 android sdks 文件夹复制任何 aar 文件,因为作者已经创建了 GooglePlayGames 插件来自动创建播放服务广告-8.4.0.aar 文件夹中的Assets\Plugins 文件。

  4. 在 Assets\GooglePlayGames\Editor 中寻找 GPGSDependencies.cs。编辑脚本并将此行添加到底部:

// Google Play Services svcSupport.DependOn("com.google.android.gms", "play-services-ads",PluginVersion.PlayServicesVersionConstraint);

  1. 通过删除 <application></application> 之间的所有内容,编辑 Assets\Plugins\Android\GoogleMobileAds\Plugin 中的 AndroidManifest.xml:

并替换为:

<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="\ YOUR_APP_ID"/>
    <meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="\ YOUR_APP_ID"/>

YOUR_APP_ID 是在您的 Google Play Developer Console 中以您的游戏名称 Services.Tested 找到的 ID 并且登录 GPGS 正常运行,以及查看排行榜、成就、发帖,当然还有插页式广告和横幅广告。

也许你可以试试 https://github.com/unity-plugins/Unity-Admob, 自带gps,不需要额外加gps,版本冲突可能不会退出。