Unity AdMob 插件 2.3.1 版和 Unity Google Play 游戏插件 0.9.30 不能一起使用

Posted

技术标签:

【中文标题】Unity AdMob 插件 2.3.1 版和 Unity Google Play 游戏插件 0.9.30 不能一起使用【英文标题】:Unity AdMob Plugin version 2.3.1 and Unity Google Play Game Plugin 0.9.30 doesn't work together 【发布时间】:2016-05-08 13:10:40 【问题描述】:

我在尝试同时使用最新的 AdMob 插件和最新的 Google Play 游戏插件时遇到问题。他们自己工作 - 我已经对此进行了测试,如果我只使用 AdMob 插件,我就会显示广告,并且我可以在只使用 Google Play 插件时登录并查看排行榜/成就。

我尝试使用存储库中包含的较旧版本的 Google Play 插件 (GooglePlayGamesPlugin-0.9.21) - Admob 有效,但 Play Services 无效。我使用了最新的 Google Play 插件 (GooglePlayGamesPlugin-0.9.30) - Play Services 工作正常,但如果调用任何方法,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 大小。这些是我收到的错误:

错误:[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] 尝试合并不兼容的 /manifest/application/activity[@name=com.google.android.gms.ads.AdActivity] 元素:

任何人都可以从这里协助吗?

【问题讨论】:

对我来说同样的问题我通过更改广告网络解决了它:D。有一个关于 google play 服务和 admob 的问题。您可以从这里关注更新。 github.com/googleads/googleads-mobile-unity/issues/149. 这太疯狂了……Google Play 游戏更新到 0.9.30 只是几天前。从我一直在阅读的所有线程中,他们几个月来都有这个问题。如果他们没有真正的解决方案,我只想解决 AdMob 问题。 【参考方案1】:

我正在使用 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。

【讨论】:

见我上面的解决方案。在撰写本文时可与最新的 Admob 和 GPGS 插件配合使用。 感谢您的回答。谷歌是一种姿态。【参考方案2】:

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

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

    由于作者已经创建了GooglePlayGames插件自动在Assets\Plugins文件夹中创建play-services-ads-8.4.0.aar文件,因此无需从android sdks文件夹中复制任何aar文件.

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

// 谷歌播放服务 svcSupport.DependOn("com.google.android.gms", "play-services-ads",PluginVersion.PlayServicesVersionConstraint);

    编辑 Assets\Plugins\Android\GoogleMobileAds\Plugin 中的 AndroidManifest.xml,删除 &lt;application&gt;&lt;/application&gt; 之间的所有内容:

并替换为:

<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 开发者控制台中以您的游戏名称在游戏服务中找到的 ID。经过测试并登录 GPGS 可以正常工作,以及查看排行榜、成就、发布,当然还有插页式广告和横幅广告。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于Unity AdMob 插件 2.3.1 版和 Unity Google Play 游戏插件 0.9.30 不能一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d 游戏中集成Firebase 统计和Admob广告最新中文教程

unity---接入Admob

Unity 3D:在现有的Android游戏场景中显示AdMob的横幅

AdMob使用AdMob游戏服务-免费!

如何添加AdMob广告到现有的Unity3D ios游戏

Unity3d 集成Firebase新中文教程