GooglePlayストアもバージョンアップが速いですね。
2021年8月以降にアップロードするアプリは次の要件を満たさないといけません。
https://developer.android.com/distribute/best-practices/develop/target-sdk?hl=ja
私も自作アプリをアップロードする必要があったので対応しました。
Unity2019.2.0f2で作ってから約2年放置してたので、ついでに色々アップデートしました。
Google Mobile Ads Unity Pluginのv6系に変えることがマストだったのですが、
プラグインのリリースノートを見ると、まだ最新のUnityと相性が悪そうでした。
余計なトラブルは避けたいので、LTSリリースの2020.3.15f2を使用することにします。
とりあえず私のアプリは150MBは超えてないので
“ダウンロード サイズが150MB を超えるアセットまたは機能を配信する場合は、Play Asset Delivery または Play Feature Delivery を使用する”は無視して、以下を満たしていきます。
API レベル 30(Android 11)以降を対象にする。
これはUnityの“Project Settings”で指定します。
対象のAPIレベルを~ってことなので“Target API Level”の方を変えます。
上記の設定だと Android 4.4 (APIレベル19) 以上の端末で動き、
Android 11.0 (APIレベル30) で最適化されたビルドになります。
よし、これでビルドしてお仕舞い!と思ったら…
Gradle build failed. See the Console for details.
Gradleビルドに失敗したからコンソール見なさいと言われました。
はい。
FAILURE: Build failed with an exception. What went wrong: Could not determine the dependencies of task ':launcher:bundleReleaseResources'. Failed to install the following Android SDK packages as some licences have not been accepted. platforms;android-30 Android SDK Platform 30 To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager. Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html Using Android SDK: C:\Program Files\Unity\Hub\Editor\2020.3.15f2\Editor\Data\PlaybackEngines\AndroidPlayer\SDK Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. Get more help at https://help.gradle.org
どうやらAPIレベル30のAndoridSDKが無くてビルドできないようです。
Unityってエンジンの中にAndroidの開発環境もバンドルされてなかったっけ??と思ったら、バージョンごとにバンドルされてるAPIレベルは限られてるんですね。選択できるAPIレベルは全部入ってるのかと思ったけど、そりゃ全APIレベル入ってたら無駄にサイズ膨らんじゃうよね(^^;
ということで―
Unityで開発するようになってから全くセットアップしてなかったAndroidStudioを入れます。
Android Studioの超簡単インストール方法(Windows)
UnityはAndroid開発環境を”Editor\Data\PlaybackEngines\AndroidPlayer”にバンドルしてます。
AndroidStudioのSDKManagerで更新するパスを、上記のAndroidPlayerの下にあるSDKにすることでAndroidSDKを更新する方法を紹介をしている記事もありました。
なるほど…と思いましたが、
あまり余計なものを入れてバグっても面倒なので、もう少し簡単に済ませます。
Unityが持ってるAndroidSDKを見ると…
build-toolsのバージョンは30.0.2で、platformsにはandroid-29が入ってました。
build-toolsの30以上はAndroid11のAPIをサポートしているようなので、
platformsにandroid-30だけ足したらイケるんじゃないか~と考えたわけです。
早速、AndroidStdioからSDKManagerで“Android 11.0”をチェックしてダウンロードします。
Android SDK Locationが”C:\Android\android-sdk”とすると、
C:\Android\android-sdk\platforms\android-30″が追加されます。
これをUnityのAndroid開発環境(Editor\Data\PlaybackEngines\AndroidPlayer\SDK\Platforms)にコピーします。
Unityを再起動します。※重要※
起動したままだと失敗したので、起動時にPlaybackEnginesを見てそうです。
ビルドできました。
Unity2020.3.15f2は最近のLTSバージョンなのでこれでもイケましたが、
古いUnityだとバンドルされてるAndroid開発環境も古いのでうまくいかないかもしれません。
とはいえSDKManagerがあれば新しいAndroid開発環境はダウンロードできますし、
PlaybackEngines\AndroidPlayerをバックアップした上で色々試してみてください。
コマンドラインツールを使うとか、他にもっとスマートな方法がありそうです。
Android App Bundle 形式で公開する。
これはUnityの“Build Settings”を開いて
“Build App Bundle (Google Play)”をチェックするだけですね。
この状態でBuildを押せばapkに代わって、aabをビルドしてくれます。
最高ですね。
普段はスクリプトからビルドしてるのですが、BuildPipelineに渡す拡張子がapkになってるとエラーになる罠はありました。エラーは出ますがaabは出来てたので、スクリプトに書いた拡張子の指定をaabに変えてあげれば問題はないようです。
AppleもGoogleもアップデートが速いので、定期的にチェックした方がいいですね。