Android 12 端末に Unity で Android ビルドしたアプリがインストールできない問題に対する対処
問題提起
Android 11 までは Google Play 経由や adb install 経由でインストールが無事に出来ていたのが, Android 12 になってから出来なくなった.
その際に出てくるエラー内容は以下のような感じであれば該当しています.
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl284569880.tmp/base.apk (at Binary XML file line #61): com.unity3d.player.UnityPlayerActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present
発生環境
- Unity 2020.3.20f1
対応方法
エラー内容に対応方法が書かれているので,その通りに行えばできました.
Project Settings > Player > Android > Build > Custom Main Manifest にまだチェックが入ってない場合はチェックを入れます.
この時に,Assets\Plugins\Android\AndroidManifest.xml
が生成されますので,
AndroidManifest.xml
に以下の該当箇所に変更を行います.
変更前
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector">
変更後
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" android:exported="true">
エラー内容に以下が出たと思いますが,まんまその通りの対応です.
exported
に関して明示的に記述しろってことですね.
Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present
初めて AndroidManifest.xml
を作成する場合は以下をコピペするだけでよいと思います.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" > <application> <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity> </application> </manifest>
参考資料
AR Foundation (ARCore) 側にて参考資料があります.