Xamarin Forms适配Android12上传Play Store遇android:exported属性冲突求助
解决Xamarin Forms Android 12上传Google Play及编译重复属性错误
问题根源
- Android 12及以上版本要求所有带intent filter的组件(Activity、Service、BroadcastReceiver等)必须显式设置
android:exported属性,否则无法上传至Google Play。 - 新版Xamarin.Android构建工具会自动为带有
MAIN和LAUNCHERintent filter的启动页Activity添加android:exported="true"属性,若手动在Activity特性中重复设置Exported参数,会导致Manifest合并时出现重复属性,触发编译错误。
解决步骤
- 移除手动添加的Exported属性:删除Activity类上
[Activity]特性中手动添加的Exported=true或Exported=false参数,避免与自动生成的属性冲突。 - 处理其他带intent filter的组件:如果应用中存在其他带intent filter的Service、BroadcastReceiver等组件,需在对应的特性中显式设置
Exported属性:- 示例:带外部调用需求的Service:
[Service(Exported = true)] - 示例:仅内部使用的BroadcastReceiver:
[BroadcastReceiver(Exported = false)]
- 示例:带外部调用需求的Service:
- 更新Xamarin依赖包:确保Xamarin.Forms、AndroidX相关NuGet包升级至最新稳定版本,旧版本可能未适配Android 12的
exported属性自动生成逻辑。 - 检查AndroidManifest.xml:避免手动在Manifest文件中重复声明组件的
android:exported属性,所有组件属性优先通过代码特性配置。
验证方式
编译项目后,查看obj\Release\120\android\AndroidManifest.xml文件,确认所有带intent filter的组件均已正确设置android:exported属性,且无重复声明。
内容的提问来源于stack exchange,提问作者Burhan Rana
相关产品推荐
相关产品推荐

