なえ箱

メモを植えます

ビルドしたアプリが繰り返し停止する時の解決方法【Unity】

この記事をシェアする

Unityでビルドしたアプリが、AndroidやiOS実機で起動できず繰り返し停止してしまう状態になった時の解決方法のメモ。

アプリが繰り返しクラッシュする

原因/解決方法

原因はAdmob周りである事が殆どです。順番に確認していってください。

(Android)AndroidManifest.xmlに必要な記述が無い

Assets\Plugins\Android\GoogleMobileAdsPlugin.androidlib\AndroidManifest.xml

に、下記のような記述が無い場合に起きます。下のように記述を追加してみてください。

<!-- android:valueの方にAdmobのAppIDを入力してください -->
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX" />

記述があるか確認してみてください。

このように記述が無いと停止する

記述が無く、これが原因である場合は書き込むとクラッシュしなくなります。

書き込むとクラッシュしなくなる

(iOS)GADApplicationIdentifierを設定していない

GADApplicationIdentifierをXCodeで設定していなくてもクラッシュします。

XCodeのinfo.plistから、GADApplicationIdentifierを設定しているか確認してみてください。

stringに広告のappidを入れます。

サンプルのappidです

(Android/iOS)AdmobのAppIDが設定されてない

Assets\GoogleMobileAds\Resources\GoogleMobileAdsSettings.asset

にAppIDを設定しなくてもクラッシュするはずなので設定しているか確認してみてください。

Assets > Google Mobile Ads > Settings... から確認できます。

Assets > Google Mobile Ads > Settings...

設定がされていれば、AppIDが欄内に表示されているはず。

設定されている

MobileAds.Initializeを呼び出していないままリクエストしている

MobileAds.Initialize((status) =>  {} );

を呼び出していないままバナーやリワードなどをリクエストしていませんか?

これでもクラッシュするので確認してみてください。

空、もしくはnullのユニットIDで広告をリクエストしている

ユニットIDが空、もしくはnullの状態でリクエストしてもクラッシュします。

ちゃんとユニットIDが入った状態でリクエストが出来ているか、ログを仕込むなどして確認してみましょう

AdmobのSDKバージョンが古い

AdmobのSDKバージョンが古いと、新しいバージョンのUnityなどでビルドした時などにクラッシュすることがあります。

参考程度にですが、Google Mobile Ads Unity Plugin v7.4.1を入れたアプリを
Unity2021.3でビルドするとクラッシュしました。

(Admobが古いから新しいAndroidバージョンに対応できてないとかが原因だと思います)

AdmobSDKの新しいバージョンをインストールしましょう。

2023年8月現在でおすすめのAdmobSDKのバージョンは8.3.0です。

新しくしすぎても問題が割とよくあるのはAdmobのパッケージあるあるなので、最新の少し手前とかがいいです。

(目安的に言えばメディエーションパッケージが対応してる最新のちょっと手前バージョン辺り)

おまけ

余談ですが、旧バージョンのAdmobだと何故か設定してもプロジェクト開くたびにAppIDが消えている事が多いです。

そんな方はこちらの記事の方法を試すと毎回設定せずに済みます。

nae3na.hatenablog.com