【Unity】Android12以上対象の場合の2つのエラーとその対処法

(Android12(API31)以上をビルド対象に含めた時)
リリース時や、アプリ実行時に発生するエラーへの対処法。

何ヶ所を手動で直させる気だ…。

(AdMob導入時)対象端末でアプリ実行するとクラッシュ

  • 3月4日に、Unity版も対応済みのVerに更新された。
    (多分、上書きしてからForce Resolveすれば良い)

AdMobプラグインのWorkManagerとの依存関係のバグ。
Android版のAdMobプラグインVer20.5.0(執筆時最新)では対応してある。

しかし、Unity版(執筆時最新)に含まれるのが、Ver20.2.0なので手動で直す必要がある。

手順

  1. 上部メニュー -> Edit -> Project Settings…
  2. Player -> Publishing Settings -> Custom Main Gradle Templateを有効化。
  3. 作成された、Assets/Plugins/Android/baseProjectTemplate.gradleを開く。
  4. implementation ‘com.google.android.gms:play-services-ads:20.2.0’の次の行に以下のコードを追加。

	constraints {
		implementation('androidx.work:work-runtime:2.7.0') {
			because '''androidx.work:work-runtime:2.1.0 pulled from
			play-services-ads has a bug using PendingIntent without
			FLAG_IMMUTABLE or FLAG_MUTABLE and will fail in Apps
			targeting S+.'''
		}
	}

  • *AdMob SDK (Android) Release Notesより一部引用。
  • External Dependency Managerで、Force Resolveを実行すると設定が上書きされるので注意。
    (通常のResolveはOk)

参考リンク

GooglePlayへアップロード時に警告 (対象端末にインストール出来ない)

(AndroidManifestへ、android:exported属性の設定を明示していない場合)
アップロード時に以下の警告文が表示される。

アップロードされた APK または Android App Bundle には、インテント フィルタを使用するアクティビティ、アクティビティ エイリアス、サービス、またはブロードキャスト レシーバが含まれていますが、’android:exported’ プロパティ セットは使用されていません。このファイルは Android 12 以降にはインストールできません。

詳細: developer.android.com/about/versions/12/behavior-changes-12#exported

Google Play Consoleのアプリのアップロード画面

手順

  1. 上部メニュー -> Edit -> Project Settings…
  2. Player -> Publishing Settings -> Custom Main Manifestを有効化。
  3. 作成された、Assets/Plugins/Android/AndroidManifest.xmlを開く。
  4. android:theme=”@style/UnityThemeSelector”>の末尾の>を消す。
  5. その次の行に以下のコードを追加。


	android:exported="true">

参考リンク

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