You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms适配Android 12上传Play Store遇exported属性配置问题

解决Xamarin.Forms适配Android 12时的exported属性问题

核心问题说明

Android 12要求所有包含intent-filter的组件(Activity、Service、BroadcastReceiver等)必须显式设置android:exported属性,但直接在Xamarin.Forms的Activity属性中设置后出现构建失败,通常是设置方式错误或依赖组件未适配导致。

正确设置步骤

  • 主Activity(带启动意图):必须设置Exported = true,因为它需要接收系统的启动请求,代码示例:
    [Activity(Label = "你的应用名", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, 
              ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, 
              Exported = true)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        // 原有业务代码
    }
    
  • 其他带intent-filter的组件:检查项目中自定义的Activity、Service或BroadcastReceiver,只要带有intent-filter配置(无论是通过C#属性还是AndroidManifest.xml),都要添加对应的Exported属性(代码中)或android:exported属性(清单文件中)。

常见构建失败排查与解决

  • 语法错误:确保C#代码中使用的是Exported = true/false(首字母大写的C#属性格式),不要直接写Android原生的android:exported。
  • 第三方依赖未适配:部分旧版NuGet包的组件可能未添加exported属性,导致合并清单时冲突:
    1. 将所有第三方NuGet包更新到适配Android 12的最新版本。
    2. 若无法更新,可在项目的AndroidManifest.xml中强制覆盖第三方组件的属性,示例:
    <!-- 先在根标签添加tools命名空间 -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              package="com.yourapp.package">
      
      <!-- 强制设置第三方Activity的exported属性 -->
      <activity android:name="com.example.thirdparty.ThirdPartyActivity" 
                android:exported="false" 
                tools:replace="android:exported" />
    </manifest>
    
  • 合并清单遗漏检查:打开项目路径obj\Debug\Android\AndroidManifest.xml(构建后自动生成的合并清单),搜索所有带<intent-filter>的组件,确认是否都已设置android:exported,遗漏的部分在主AndroidManifest.xml中补充设置。

内容的提问来源于stack exchange,提问作者shahrukh hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:40:22