ダーク/ライト切り替え

AdMob SDKを含むUnityプロジェクトのビルド設定

投稿日2023-11-04

Picture of the logo


目次

目次を読み込み中...

Google AdMob SDKを組み込んだUnityプロジェクトをAndroid向けにビルドした際に、超ハマったので備忘録として記録に残しておきます。実際の対応方法は環境やバージョンによって異なるかもしれません。予めご了承ください。

# 実証時の環境

執筆日:2023年11月4日 OS:Windows 10 Unityバージョン:2021.3.30f1 AdMob SDKバージョン:8.5.1

# 問題となった現象

ビルドされたアプリケーションが、実機、エミュレーター上ともに正常に動作しない。具体的には、下記のコードのような初期化メソッドすら実行されず中断されてしまった。

AdMob SDK以外の機能には全く問題なく、またC#のコードには特に問題になるような変更は加えてはいなかった。

# 原因はビルド設定のminifyだった

結論から言うと、原因はUnity Editorのメニューの[File]-[Build Settings]-[Player Settings]を開いて、更にその中の一番したにあるPublishing Settingsの下の方にあるMinify設定項目だった。

build settings

リリース用ビルドなのだからと、releaseにもチェックを入れたのがマズかったようです。画像のようにリリースからチェックを外し、R8だけにチェックを入れてビルドしたら正常に動作しました。

# 何故releaseにチェック入れてはいけないのかAIに聞いてみた

以下はGoogle Bardに聞いた回答です。Google AdMobに関する質問なのでChat-GPTではなくBardに聞いてみました。以下はAIからの回答をそのままコピペしたものです。

Unity Editorのplayer settingsのなかにあるpublisher settingsのminify設定で、use R8,release,debugのそれぞれの項目の機能と用途は、以下のとおりです。 **use R8** デフォルトの設定です。Android向けのリリースビルドで、コードを最小化してサイズを小さくします。 コードの難読化も行われるため、ゲームの改造を防ぐことができます。 ただし、難読化によってデバッグが難しくなる場合があります。 **release** コードを最小化してサイズを小さくしますが、難読化は行われません。 デバッグが容易なため、リリースビルドの前や、デバッグに時間をかける必要がある場合に使用します。 **debug** コードを最小化せず、デバッグ情報を残します。 デバッグが最も容易なため、開発やテストに使用します。

# それぞれの項目の用途

**リリースビルド** ゲームを一般公開する際に使用します。コードの難読化によってゲームの改造を防ぐことで、著作権を保護することができます。 **デバッグビルド** ゲームの開発やテストに使用します。デバッグ情報を残すことで、エラーの原因を特定しやすくなります。 **まとめ** ゲームの公開目的に合わせて、適切な設定を選択してください。 **補足** R8は、Android向けのコード最適化ツールです。 難読化は、コードを複雑にして読みにくくする処理です。 デバッグ情報は、エラーの原因を特定するために役立つ情報です。

# 原因を直接聞いてみた結果

具体的に直接AIに聞いてみた。

質問は R8とreleaseの二つにチェックを入れてビルドするとadmob SDKの機能が起動しなくなります。原因はわかりますか? です。以下がAIからの回答です。

R8は、Android向けのコード最適化ツールです。R8を有効にすると、コードが最小化され、難読化されます。これは、コードのサイズを小さくしてパフォーマンスを向上させる効果がありますが、同時に、コードの可読性やデバッグ性を低下させる可能性があります。 AdMob SDKは、Android向けの広告配信プラットフォームです。AdMob SDKは、コードの難読化によって影響を受けやすいため、R8とreleaseの両方を有効にすると、AdMob SDKの機能が起動しなくなる可能性があります。 具体的には、AdMob SDKが使用する以下のコードが、R8によって削除または難読化される可能性があります。 AdMob SDKの初期化コード AdMob SDKの広告表示コード これらのコードが削除または難読化されると、AdMob SDKが正常に機能しなくなり、広告が表示されないなどの問題が発生します。 この問題を解決するには、R8を有効にしたままで、releaseを無効にします。これにより、コードの難読化が行われなくなるため、AdMob SDKの機能が正常に動作するようになります。 具体的には、Unity Editorのplayer settingsのなかにあるpublisher settingsのminify設定で、releaseのチェックを外します。 また、AdMob SDKの最新バージョンを使用することも有効です。AdMob SDKの最新バージョンでは、R8による最適化の影響を軽減するための対策が取られています。 なお、AdMob SDKの機能が起動しない場合、以下の点も確認してください。 AdMob SDKの設定が正しく行われているか デバイスのAndroid OSがAdMob SDKの対応OSであるか AdMob SDKの広告枠が有効になっているか これらの点を確認しても問題が解決しない場合は、AdMobのサポートにお問い合わせください。

一行にまとめると、Use R8だけチェックして他は外せです。

# その他の注意点

ビルド設定やプログラムに問題が無いのに公告が表示されない時の1つの要因としてAndroid Resolverの可能性もあります。一見、リゾルブが終わっているように見えても実は失敗しているかもしれないので、Force Resolveを試してみるといいかもしれません。

今後、広告の実装で躓いたらこの記事を思い出して参考にしたいと思います。






関連記事

UnityでFirebase Storeからデータを読み書きする

blog

FirebaseのFireStoreのデータをUnityから読み書きする手順を紹介します。入門レベル。

Unityで端末情報、IPアドレスを取得する方法

blog

Unityにて端末固有情報などをC#コードから取得する方法をまとめました。

UnityでTrail Rendererを使ってオブジェクトの軌跡を描画する

blog

今回はUnityでTrail Rendererを使ってオブジェクトの軌跡を描画する方法についてご紹介します。Trail Rendererを使うことで、オブジェクトがどのような軌跡を描いたかを可視化することができます。

【Unity】Json,CSVファイルを相互に変換する方法【備忘録】

blog

個人的備忘録も兼ねてUnityでインスペクタ上でテキストファイルを指定して、そのファイルから結果を取得する方法をいくつか紹介します。

【Unity】複数のシーンがあるアプリでシーン遷移を軽くするための工夫

blog

Unityでゲームアプリを作る際にシーンをまたぐ時に少しでもシーン遷移を軽くする方法を個人的備忘録も兼ねて書き残しておきます。

UNITYで扇形を作ってみた

blog

Unity上で扇形を作る機能が標準ではついてない?ようなので自作してみました。

【初心者】Unityでリンク先のウェブサイトを開く方法【備忘録】

blog

Unityからウェブサイトを開く方法を簡単に紹介します。初心者向け、備忘録

Firebase AuthentificationでEmailアカウントと匿名アカウントを実装する

blog

今回はFirebase Authentificationを使ってUnityに匿名認証、メール認証を実装する手順を紹介します。

【Unity】MagicOnionサーバを立ち上げて自己証明書でSSL通信してみる

blog

Unity向けgrpcサーバーManicOnionの導入時にSSL化やNGINXの設定に少し手こずったので備忘録も兼ねて手順をまとめておきました。

GO言語サーバーとUnityクライアント(C#)をgRPCで接続テストしてみた【入門レベル】

blog

UnityでgRPCをする場合、Magic Onionを使うのがお手軽ですが、今回はGO言語でサーバーを構築してみたかったので最低限の接続機能を自作してみました。備忘録を兼ね書き残しておきます。


スポンサーリンク

このサイトをシェアする