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

Xamarin Forms升级Android API Target Level至12遇android:exported错误求解决

解决Xamarin Forms升级Android 12的android:exported错误问题

问题原因

你遇到的错误并非自身代码组件的问题,而是第三方NuGet包(如Xamarin.GooglePlayServices.Analytics、Firebase相关组件)的Manifest未添加android:exported属性,这些旧版本包未适配Android 12的要求,导致合并后的Manifest不符合规则。

具体解决步骤

1. 优先升级相关NuGet包到支持Android 12的版本

你的NuGet包版本偏旧,早期的Xamarin.GooglePlayServices和Firebase系列包未适配Android 12的exported要求:

  • 找到项目中Xamarin.GooglePlayServices.Analytics、Xamarin.Firebase.*等相关包,升级到2021年下半年及以后的稳定版本(这些版本已内置android:exported属性)。
  • 注意:部分旧包已被弃用,比如Xamarin.GooglePlayServices.Analytics可替换为Xamarin.Firebase.Analytics(Google官方推荐的新统计方案)。

2. 手动在AndroidManifest.xml中补全第三方组件的exported属性

如果暂时无法升级包(如存在依赖冲突),可在项目的AndroidManifest.xml中手动为报错组件添加属性:

  • 先在Manifest根标签添加tools命名空间:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              package="你的应用包名">
    
  • 然后在<application>标签内添加以下内容(根据报错组件调整):
    <!-- FirebaseService 无需对外暴露,设为false -->
    <service android:name="crc643a9353f6fb65c51a.FirebaseService" android:exported="false" />
    
    <!-- FirebaseIdService 设为false -->
    <service android:name="crc643a9353f6fb65c51a.FirebaseIdService" android:exported="false" />
    
    <!-- BootReceiver 需要接收系统开机广播,设为true -->
    <receiver android:name="crc64df999be563077fc4.BootReceiver" android:exported="true" />
    

3. 清理重建项目

完成操作后,执行以下步骤避免缓存问题:

  • 右键解决方案 → 清理解决方案
  • 删除项目的obj和bin文件夹
  • 右键解决方案 → 重建解决方案

4. 检查并替换弃用包

若某些包已停止维护(如部分旧Xamarin.GooglePlayServices模块),建议替换为Google官方推荐的Firebase或Jetpack对应的Xamarin绑定包,从根源上避免适配问题。

内容的提问来源于stack exchange,提问作者elza james

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:00:56