前置き
試した内容をメモって最後にまとめようと思っていたが、
エラーに対してどの作業が影響して解決したかが
よくわからなくなったので箇条書きレベルのメモ。
最終的な解決方法
プロジェクトの確認。
Exclude PlatformsのAndroidにチェックが入っていた。
Exclude = 除外する
凡ミス!!
これでbuild通るようになり、クラッシュもしなくなりました。
以下メモ。
ビルドできない
[試したこと1]プラグインのバージョンのダウングレード
プラグインのバージョンを
7→6.1.2
にダウングレード。
[試したこと2]スクリプトの書き方の見直し。
プラグインのバージョンによって書き方がある。
Unity、エディタ側で参照エラーなどを吐くので調べながら書き直す。
[試したこと3]manifest.xmlを見直す
エラー
Gradle build failed.
修正箇所
<manifest>
<application>
<!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy(←アプリIDです)"/>
</application>
</manifest>
原因
android:valueを広告IDにしていた。
↓
アプリIDに変更する。
[試したこと4]Google Mobile Ads Unity Plugin入れなおす
別のエラーが...
試したこと4で起きたエラー
エラー
Resolution Failed.
Gradle failed to fetch dependencies.
対応1 Folce Resolve
/Users/name/.gradle/wrapper/dists/gradle-5.1.1-bin
を消去して、もう一度Folce Resolveすることで対応できます。
治らない。
対応2 distributionUrlを変える
(ProjectName)\Temp\PlayServicesResolverGradle を開く
PlayServicesResolver.scripts.gradle-template.zip の中にある
gradle/wapper/gradle-wrapper.properties を開く。
distributionUrl=https://services.gradle.org/distributions/gradle-5.1.1-bin.zip
↓修正
distributionUrl=https://services.gradle.org/distributions/gradle-6.4.1-bin.zip
治らない。
アプリが起動時にクラッシュする
検証方法
まず端末側で何が起きているか調べられるようにする。
「Android Logcat」をインストール。
https://nobushiueshi.com/unityandroid-logcat/
[試したこと1]AndroidManifest.xmlを探る
https://googlemobileadssdk.page.link/admob-android-update-manifest
とりあえずサポートを見てねと出たので見てみる
AndroidManifest.xml
が原因ぽい。
Plugins/Android/AndroidManifest.xml
Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml
の2つあった。
わからなかったので両方直す。
Plugins/Android/AndroidManifest.xml
→ID変更
Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml
→meta-dataを追記
↓
治らない!
[試したこと2]Google Mobile Ads Unity Pluginのバージョンを確認
入れ直してみる。
v7.0.0(だめ)
↓
v6.0.0(だめ)
↓
v6.1.2(だめ)
結果、関係なさそう。
その他
Google Play Consoleのエラー
アップロードされた APK または Android App Bundle には、インテント フィルタを使用するアクティビティ、アクティビティ エイリアス、サービス、またはブロードキャスト レシーバが含まれていますが、'android:exported' プロパティ セットは使用されていません。このファイルは Android 12 以降にはインストールできません。詳細: developer.android.com/about/versions/12/behavior-changes-12#exported
広告が表示されない
AdMobの「支払情報」の登録する
「準備中」のままで変わらない...
48時間で表示されるようになるらしい。
確かに2日ほどで表示されるようになった。
広告の表示タイミングをコントロールする
アダプティブバナーを選択。
一度読む込むと最上位のレイヤーに出続ける。
ゲームオーバー画面だけに出したかったのでコントロールする。
public class GoogleAdmobBanner : MonoBehaviour
{
public BannerView bannerView;
void Start()
{
MobileAds.Initialize(initStatus => { });
RequestBanner();
}
private void RequestBanner()
{
/*省略*/
this.bannerView.LoadAd(adRequest);
this.bannerView.Hide();//読み込んだあとは非表示にする
}
}
あとは任意のタイミングでコントロールする。
/*表示*/
GoogleAdmobBanner.bannerView.Show();
/*非表示*/
GoogleAdmobBanner.bannerView.Hide();