Unity游戏上传Google Play Console遇android:exported配置错误
解决Unity游戏上传Google Play Console的Android 12+ Exported属性问题
核心问题说明
所有带有<intent-filter>的组件(Activity、Activity别名、Service、Broadcast Receiver)必须显式设置android:exported属性,且值要根据组件用途而定,不是统一设为false——这是Android 12及以上版本的强制要求。
具体修复步骤
1. 定位并获取可编辑的AndroidManifest.xml
- 如果Unity项目中已有
Assets/Plugins/Android/AndroidManifest.xml,直接编辑该文件; - 如果没有,在Unity编辑器中执行:
File > Build Settings > 选择Android平台 > 点击"Export Project",导出后在生成的Android项目中找到app/src/main/AndroidManifest.xml进行编辑。
2. 排查并修正所有带的组件
逐一检查以下标签,只要内部包含<intent-filter>,就必须添加android:exported:
- 主Activity(UnityPlayerActivity):带有
ACTION_MAIN和CATEGORY_LAUNCHER的intent filter,必须设为android:exported="true"(这是应用的系统入口,需要被外部调用)。
修正示例:<activity android:name="com.unity3d.player.UnityPlayerActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - 第三方插件的组件:如果插件的Service、Receiver或Activity带有intent filter,根据用途设置:仅应用内部使用则设为
false,需要被系统/其他应用调用则设为true。
3. 处理Manifest合并冲突
如果第三方插件的Manifest未设置android:exported,会导致合并后的Manifest不符合要求,可通过强制覆盖解决:
- 在Manifest根标签
<manifest>中添加tools命名空间:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> - 针对冲突组件添加
tools:replace="android:exported"属性,强制覆盖设置:<service android:name="com.example.thirdparty.ThirdPartyService" android:exported="false" tools:replace="android:exported"> <intent-filter> <!-- 插件原有的intent filter内容 --> </intent-filter> </service>
4. 验证修正结果
- 构建App Bundle后,用Android Studio的APK Analyzer打开
.aab文件,查看合并后的AndroidManifest.xml,确认所有带<intent-filter>的组件都已正确设置android:exported; - 或直接查看Unity导出项目中
app/build/intermediates/merged_manifests/debug/AndroidManifest.xml文件,确认配置无误。
内容的提问来源于stack exchange,提问作者sina hilse
相关产品推荐
相关产品推荐

