Unity2019.4→2020.3にプロジェクトをアップグレードした時のAdMob関連エラー

スポンサーリンク
AdMob
スポンサーリンク
↑管理人が個人でUnity+Live2Dで作成しているスマホゲームです
スポンサーリンク

現象

正しいApp idをインスペクタに入れているのにAndroid実機で動かすと即座にクラッシュする。デバッガで見ると”The Google Mobile Ads SDK was initialized incorrectly”のエラーが出ている。
Admob管理画面でもきちんとアプリは審査済み。
検索して出てくる様々な対処法を試すも効果なし。

エラー1

Plugin ‘Assets/GoogleMobileAds/GoogleMobileAds.dll’ has the same filename as Assembly Definition File ‘Assets/GoogleMobileAds/GoogleMobileAds.asmdef’. Rename the assemblies to avoid hard to diagnose issues and crashes.

一度古いAdMobのファイルを消して入れ直す。

エラー2

Multiple precompiled assemblies with the same name Google.VersionHandler.dll included or the current platform. Only one assembly with the same name is allowed per platform.

→Assets>ExternalDependencyManager>Editor>Google.VersionHandler削除

エラー3

Argument 1: cannot convert from ‘string’ to ‘System.Action’

Admobをアプデした事でInitialize()の引数にapp idを使えなくなったため。

MobileAds.Initialize(initStatus => { //初期化に付随する処理});

に変更する

エラー4

‘InterstitialAd’ does not contain a definition for ‘OnAdLeavingApplication’ and no accessible extension method ‘OnAdLeavingApplication’ accepting a first argument of type ‘InterstitialAd’ could be found (are you missing a using directive or an assembly reference?)

this.interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication; をコメント。

this.interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication; //この行をコメント化


public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args)
public void HandleOnAdFailedToLoad(object sender, AdErrorEventArgs args)
↓
public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
        Debug.Log(
            "HandleRewardedAdFailedToLoad event received with message: "
                             + args.LoadAdError.GetMessage());

エラー5

BuildMethodException: [GoogleMobileAds] AndroidManifest.xml is missing. Try re-importing the plugin.
ManifestProcessor.StopBuildWithMessage (System.String message) (at Assets/GoogleMobileAds/Editor/ManifestProcessor.cs:211)
ManifestProcessor.OnPreprocessBuild (UnityEditor.Build.Reporting.BuildReport report) (at Assets/GoogleMobileAds/Editor/ManifestProcessor.cs:76)
UnityEditor.Build.BuildPipelineInterfaces+<>c__DisplayClass15_0.b__1 (UnityEditor.Build.IPreprocessBuildWithReport bpp) (at <92e8e151ac2247a491cb6ca42a1bead9>:0)
UnityEditor.Build.BuildPipelineInterfaces.InvokeCallbackInterfacesPair[T1,T2] (System.Collections.Generic.List1[T] oneInterfaces, System.Action1[T] invocationOne, System.Collections.Generic.List1[T] twoInterfaces, System.Action1[T] invocationTwo, System.Boolean exitOnFailure) (at <92e8e151ac2247a491cb6ca42a1bead9>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

ManifestProcessor.cs

string manifestPath = Path.Combine(Application.dataPath, "Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml");
↓
string manifestPath = Path.Combine(Application.dataPath, "Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest.xml");

※これで解決出来たのは過去のバージョンまで?

解決策

今までAndroidManifest.xmlがPlugins/Android/GoogleMobileAdsPlugin.androidlib/に見つからないというエラーについて以下の様に対策していたものの、Unity2020では不可?

ManifestProcessor.cs

string manifestPath = Path.Combine(Application.dataPath, "Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml");
↓
string manifestPath = Path.Combine(Application.dataPath, "Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest.xml");

よく見ると、UnityのProjectウィンドウでFirebaseのAndroidManifest.xmlはNormal Assetになっているのに、Plugins/Android/GoogleMobileAdsPlugin/のAndroidManifest.xmlだけアイコンが異なっており、属性もText 、Scripted Importer、 Imported Objectになっていた。このせいでxmlとして正常に読めなかった可能性がある。
試しにPlugins/Android/GoogleMobileAdsPlugin.androidlibフォルダを作って中にはGoogleMobileAdsPluginのコピーを置き、ManifestProcessor.csのパスも元に戻したところ、こちらのAndroidManifest.xmlはNormal Assetになった。そのままビルドしたところ、The Google Mobile Ads SDK was initialized incorrectlyのエラーによるクラッシュが起きなくなった。

たまに「this feature requires asm7」とか「UnityPlayerActivity.javaは非推奨のAPIを使用またはオーバーライドしています。」と出るが理由は不明

iOSでのエラー

エラー1

pod install –repo-updateが失敗。
「gitコマンドを実行するには、コマンドラインデベロッパツールが必要です。ツールを今すぐインストールしますか?」
インストール→同意する→無限ループ。

以下解決法

xcode-select -p
/Applications/Xcode.app/Contents/Developer #このパスだと修正する必要がある
sudo xcode-select -switch /Library/Developer/CommandLineTools #修正

pod install --repo-update #再実行

your project does not explicity specify the cocoapods master specs repo. since CDN is now used as the default, you may safely remove it from your repos directory via #エラーが出る

pod repo remove master
sudo gem install cocoapods

エラー2

Xcodeでビルドすると「Cannot find protocol declaration for GADRewardedAdDelegate」のようなエラーが出る。
Unityの「Assets/Plugins/iOS」フォルダに入っている”GADUAdNetworkExtras.h”以外の”GADUAd〜”という名前のプラグインを削除して再度ビルドする。

エラー3

Xcodeでビルドすると「does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file ‘〇〇’ for architecture arm64」というエラーが出る。

開発中のProjectをクリック
→TARGETSをクリック
→Build Settingsタブをクリック
→検索窓に『bitcode』と入力
→Enable BitcodeをすべてYESからNOにする

エラー4

archiveしてvalidate時にthe app references non-public selectors in payloadというWarningが出るが、無視しても提出可能。

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

広告ブロッカーを無効にしてください。

タイトルとURLをコピーしました