先日、UnityでAndroid13向けのビルドをした時に色々詰まったことを踏まえて、手順を書きました。
そのときに詰まった時のログメッセージや参考になったサイトも書いていたのですが、別の記事にした方が見やすいと思ったので、この記事に別途分けることにしました。
- 1. 詰まった状況と解決方法
- 1.1 No Compatible Android Device Found というエラーがでてビルドが失敗する
- 1.2 Project SettingでARM64がグレーアウトして選択できない
- 1.3 アプリをインストールできたが、Pixel7から実行すると「このアプリはインストールされていません」というトーストが表示されてアプリが実行できない
- 1.4 UnityからPixel7にインストールするとき、インストールはできるがPermission Denial: starting Intent { act=android.intent.action.MAINが出ている
- 1.5 UnityからPixel7にインストールするとき、INSTALL_PARSE_FAILED_MANIFEST_MALFORMED が出てインストールが失敗する
- 2. おわりに
使用した環境 ・Mac OS Ventura 13.4 ・Pixel 7 (Android 13) ・Unity 2021.3.28f1
1. 詰まった状況と解決方法
1.1 No Compatible Android Device Found というエラーがでてビルドが失敗する
今回使ったPixel 7がARM64なのですが、Project SettingでARMv7が選択されていることで発生します。
ARM64を選択すると解決します。
1.2 Project SettingでARM64がグレーアウトして選択できない
こちらの投稿を参考にして解決できました。Scripting Backendの設定を変更することで、ARM64が選択できるようになります。
1.3 アプリをインストールできたが、Pixel7から実行すると「このアプリはインストールされていません」というトーストが表示されてアプリが実行できない
このメッセージが表示される原因は色々あるようです。この言葉で調べると多数の情報が出てきます。
そこで出てくる内容は、アプリキャッシュを削除する、スマートフォンを再起動する、アプリを再度インストールする、apkではなくてaabでビルドする、などでしたが、いずれも当てはまりませんでした。
このエラーだけではわからず、最終的にこの後書く内容で解決しました。
1.4 UnityからPixel7にインストールするとき、インストールはできるがPermission Denial: starting Intent { act=android.intent.action.MAINが出ている
Unity Consoleにこのエラーが出ても、見かけ上Pixel7にはアプリがインストールされたように見えます。しかし、実行すると「このアプリはインストールされていません」が出ます。
解決するには、AndroidManifest.xmlでandroid:exported="true"を追加します。
こちらに記載があります。
Android 12 以降をターゲットとするアプリに、インテント フィルタを使用するアクティビティ、サービス、またはブロードキャスト レシーバが含まれている場合は、それらのアプリ コンポーネントで android:exported 属性を明示的に宣言する必要があります。
(途中省略)
アプリ コンポーネントに LAUNCHER カテゴリが含まれている場合は、android:exported を true に設定します。他のほとんどの場合は、android:exported を false に設定します。
今回はAndroidManifest.xmlにLauncherという記載があったので、trueにしました。
1.5 UnityからPixel7にインストールするとき、INSTALL_PARSE_FAILED_MANIFEST_MALFORMED が出てインストールが失敗する
先ほどのAndroidManifest.xmlでandroid:exported="false"にしていると、このエラーがでます。trueにしてからBuild and Runを実行すると解決します。
2. おわりに
UnityのAndroidビルドで困ったという記事が多かったので書いてみました。何かのお役に立てば幸いです。