ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

Google Console「対象APIを超えるAndroidバージョンの新規ユーザーは、アプリを利用できなくなります」への対処(Android12、13への対応まとめ)

Google Console「対象APIを超えるAndroidバージョンの新規ユーザーは、アプリを利用できなくなります」への対処方法。

警告
警告(詳細)

いくつかの先駆者の方々の情報を基に解決できました。備忘もかねてまとめます。

警告の意味

Target APIAndroid 12 以上が含まれているが、Android 12/13 でのリリース要件を満たしていない、ということのようです。

Project Settings > Player > Other Settings > Identification

結果的に以下の対応が必要でした。
(1) SDK 31-33 のインストール
(2) アクティビティ、サービス、ブロードキャストレシーバ等に android:exported 属性を追加(2段階)


以下、それぞれ対処方法をまとめます。
(それぞれの問題を扱ったサイトがあったので助かりました)

(参考)
【2023/05版】UnityでAndroidビルド失敗.原因はTarget API Levelだった!? #Android - Qiita

対処手順

SDK31-33をインストールする

原因の一つは、最新のAPI(SDK31-33)が含まれていないというもの。

以下フォルダを確認します(バージョンによって異なるので、後述した参考サイトも確認いただければ…)
C:\Program Files\Unity\Hub\Editor\{Unityバージョン}\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms

必要なAPI(SDK31-33)


SDK31-33が無い場合は、
Android StudioAPIを取ってきて、Unity用のAPI置き場にコピーします。


(確認した Android Studio バージョン)
Android Studio Bumblebee | 2021.1.1
Build #AI-211.7628.21.2111.8092744, built on January 19, 2022
Runtime version: 11.0.11+9-b60-7590822 amd64


Android Studio のメニューから Tools → SDK Manager を選択

Android Studio > Tools > SDK Manager

SDK Manager 上で、必要なSDK(おそらくこの記事を見に来たほとんどの方は Android31-33 )を選択

SDK Manager

③画面右下 Apply をクリックしてインストール

少し時間かかりますが、対象のSDKがダウンロードされます

ダウンロードされたことを確認

Android StudioSDK置き場から、Unity用のSDK置き場にコピーします。
管理者権限を求められますので、許可してコピーします。

IDE フォルダ
Android StudioAPI C:\Users\{Windowsユーザー名}\AppData\Local\Android\Sdk\platforms
Unity用API C:\Program Files\Unity\Hub\Editor\2020.3.26f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms

(参考)
【2021年8月以降必須】UnityでAPIレベル30に変更する方法【Android StudioからSDKをインストール】 | YouDoYou Blog ~スマートかつ快適に創造を楽しむ~

android:exported を追加する(androidmanifest.xml

2つ目の原因はインテントフィルタを使用しているアクティビティ、サービス、ブロードキャストレシーバには、android:exported属性が必要というもの


androidmanifest.xml

  <application>
    <activity android:name="アクティビティ名"
             android:exported="true"
             android:label="@string/app_name"
             android:launchMode="singleTop" >

上記の3行目にある android:exported="true" または "false" を入れてあげる必要があります。


自分以外のアプリから呼ばれる可能性があるアクティビティ(ランチャー指定 "android.intent.category.LAUNCHER" があるものなど)は true、それ以外は false。


(androidmanifest.xml の置き場所を忘れた方は以下)
tomo-mana.hatenablog.com

Unityアプリであれば、以下に置いてあるはずです。

アプリ用の宣言 \Assets\Plugins\Android 直下
リリースビルド後(結合版) Unityプロジェクトフォルダ\Temp\gradleOut\launcher\build\intermediates\instant_app_manifest\release\AndroidManifest.xml

(参考)
【Unity】Androidアプリで「APIレベルを上げてください」と怒られた時の対処法 | くものす

android:exported 警告が解消しない → 関連ライブラリをアップデート

自分で定義した全部のアクティビティ、サービス、ブロードキャストレシーバ などに android:exported="true" または "false" を入れたのに、まだGoogle Console に登録ができない場合、使用しているライブラリが一部対応していないことがあります。

私の場合は Notification の一つのライブラリが対応していませんでした。

Package Manager > Mobile Notifications
1.4.2 → 1.4.4 にバージョンアップ で解消しました。

(参考)
りゅうくんの工房 Unity "android:exported"の時の対処
Android12対応でexported属性を設定したのに怒られた時の対処法 #Android - Qiita


1年ぶりに更新したので、いろいろやり方を忘れているところがあり、あくせくしながら対応することになりました。

以上です。