[unity]'android:exported' プロパティ セットは使用されていません。このファイルは Android 12 以降にはインストールできません。

Android 用バンドルファイル (AAB) を Google Play Console にアップすると、このようなメッセージが出て App Bundle をアップロードできませんでした。

アップロードされた APK または Android App Bundle には、インテント フィルタを使用するアクティビティ、アクティビティ エイリアス、サービス、またはブロードキャスト レシーバが含まれていますが、'android:exported' プロパティ セットは使用されていません。このファイルは Android 12 以降にはインストールできません。詳細: developer.android.com/about/versions/12/behavior-changes-12#exported

unity 2020.3、2021.3 で確認しました。

これを回避するには AndroidManifest.xml を修正する必要があります。
まず、Project Settings > Player > Publish Settings > Build > Custom Main Manifest に✔をつける。

AndroidManifest.xml を編集する

Assets/Plugins/Android/AndroidManifest.xml のポジションは変えない方がいいみたいです。

XML が正しく表示されるテキストエディタで開きます。
(Visual Studio 2019 だと設定のせいか、ダブルクオーテーションが消えてしまった)

<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    <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>

activity タグに android:exported="true" を追加して、再度ビルドしてください。
出来上がった AAB ファイルを再度 Google Play にアップすると、エラーが解消されます。

これでも解消されない場合

この AndroidManifest.xml、使用しているパッケージの中にも存在する可能性があります。
外部から aar ファイルを持ってきて、使っている場合も危険です。
こっそり AndroidManifest.xml が混入されていたりします。

こんな風に

この中に activity が記述されている場合、そちらにも android:exported="true" を書かないとエラーになってしまいます。
私の経験だと UnityGoogleDrive の中にあった aar ファイルで AppAuth が使われており、その activity が問題を引き起こしていました。

UnityGoogleDrive の記述

        <activity
            android:name="net.openid.appauth.RedirectUriReceiverActivity"
            tools:node="replace" >

unity がコンパイルした後

        <activity
            android:theme="@ref/0x01030010"
            android:name="net.openid.appauth.AuthorizationManagementActivity"
            android:exported="false"
            android:launchMode="2" />

記述がないため、android:exported="false" が勝手に付与されてしまいます。

解消方法

直接該当する AndroidManifest.xml を修正できるのであれば、修正しましょう。

パッケージ内の xml だと、修正しても unity 君が時々ファイルを元に戻す、といういらぬ親切が発動してしまうので、Assets/Plugins/Android/AndroidManifest.xml で上書き記述する、という方法で回避することも出来ました。(Assets/Plugins/Android/AndroidManifest.xml の記述が優先されるようです)

Assets/Plugins/Android/AndroidManifest.xml の上書き記述

        <activity
           android:name="net.openid.appauth.RedirectUriReceiverActivity"
           tools:node="replace"
           android:exported="true">
          <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="${applicationId}" />
          </intent-filter>
        </activity>

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA