LoginSignup
2
0

More than 1 year has passed since last update.

Unity/Android: Admobでのビルドできない、クラッシュするなど色々なエラーについて

Last updated at Posted at 2022-03-21

前置き

試した内容をメモって最後にまとめようと思っていたが、
エラーに対してどの作業が影響して解決したかが
よくわからなくなったので箇条書きレベルのメモ。

最終的な解決方法

プロジェクトの確認。
Exclude PlatformsのAndroidにチェックが入っていた。
Start_-monster-chess-0-Android-Unity_2020_3_20f1_Personal__Personal___Metal.png

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 を開く。

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/

原因を見る
Android_Logcat_と_Qiita.png

[試したこと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

Project_Settings.png

広告が表示されない

AdMobの「支払情報」の登録する
「準備中」のままで変わらない...
48時間で表示されるようになるらしい。
確かに2日ほどで表示されるようになった。

広告の表示タイミングをコントロールする

アダプティブバナーを選択。
一度読む込むと最上位のレイヤーに出続ける。
ゲームオーバー画面だけに出したかったのでコントロールする。

Csharp GoogleAdmobBanner.cs
public class GoogleAdmobBanner : MonoBehaviour
{
    public BannerView bannerView;
    void Start()
    {
        MobileAds.Initialize(initStatus => { });
        RequestBanner();
    }
    private void RequestBanner()
    {
        /*省略*/
        this.bannerView.LoadAd(adRequest);
        this.bannerView.Hide();//読み込んだあとは非表示にする
    }
}

あとは任意のタイミングでコントロールする。

Csharp sample.cs
/*表示*/
GoogleAdmobBanner.bannerView.Show();
/*非表示*/
GoogleAdmobBanner.bannerView.Hide();
2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0