【Unity】AndroidのAPIレベルとOS、SDKとの関係を整理してみる
UnityでAndroid向けにゲームアプリをリリースしようとする時に見かけるAPIレベルについてOSのバージョンやSDKのバージョンとの関連を整理しています。ストアでリリースする際の要件にも関わってくる部分なので調べておきたい部分です。
あなたのゲームをいち早く完成させるための研究所
UnityでAndroid向けにゲームアプリをリリースしようとする時に見かけるAPIレベルについてOSのバージョンやSDKのバージョンとの関連を整理しています。ストアでリリースする際の要件にも関わってくる部分なので調べておきたい部分です。
Unityで使用しているAndroid SDKのパスと、Android Studio側で使用しているAndroid SDKのパスが異なる場合、どちらのパスを使うのか確認するダイアログが表示されます。個人的にはエクスポートしたプロジェクトでビルドするかどうかでどちらのSDKを使うか決めています。
UnityでAndroid向けビルドを行う場合はマニフェストファイルを自動的に作成してくれます。直接apkファイルを出力する場合は目にする機会がないこともあるので、apkファイルに含まれているマニフェストファイルについて簡単に紹介します。
Unityで作ったゲームをAndroid向けにビルドする時にはGradleというオープンソースのビルドシステムを使います。ビルドする際はUnityがいい感じにやってくれるのであまり意識することも少ないかもしれませんが、自分でカスタマイズしたGradleのテンプレートファイルをUnityで使って自分用に最適化することもできるので知っておくとAndroid向けの開発がさらに楽しくなります。
このページではAndroidビルドで見かけるJDK、SDK、NDKのワードについて簡単に解説しています。ざっくり言えばUnityでAndroid向けにアプリをビルドするために使うツールです。Unityで、というよりはAndroidアプリそのものを作るときに使うツールの方が近いかも。似たような名前が並んでいるので、省略前の名前を意識すると頭に入りやすいかもしれません。
このページではUnity製アプリをAndroid向けにビルドする際にx86を選択できなくなったことからAndroid Studioのエミュレータを使ってのテストは難しいかも……という点を紹介しています。普通にAndroid StudioでAndroid用アプリを作る場合はエミュレータも使えるのでご安心ください。あくまでUnityの話です。
UnityでAndroid向けにビルドしたアプリをAndroid11(APIレベル30)の環境で実行するとクラッシュすることがあった件について事象と解決方法を記載しました。このアプリではUnityAdsを使っていたので、UnityAdsのバージョンをアップデートすることで解決しました。
Androidでアプリ名をローカライズする場合は、Androidライブラリ(aar)を使ってリソースを用意します。やってみるとそんなに難しくないので、この記事で紹介している画面に沿って試してみてください。
急いでいる人のために結論からいうと、「Android の互換性」について「MethodHandles$Lookup」の警告だけが出ているなら無視しても大丈夫なようです。これはUnityのフォーラムにおいてUnityの中の人が回答している情報から判断しています。