MAUI Android添加推送通知时AndroidManifest.xml依赖错误求助
解决MAUI Android推送通知的Android 12+依赖错误
问题根源
错误核心是依赖的Firebase AAR包自带的Manifest中,部分内部组件未显式声明android:exported属性。Android 12及以上版本强制要求:所有包含intent-filter的组件(Activity、Service、Receiver)必须明确设置该属性。你自己的Manifest仅配置了自定义Firebase服务,但第三方依赖的组件未满足系统要求。
解决方案
1. 显式覆盖第三方组件的android:exported属性
在主AndroidManifest.xml的<application>标签内,添加报错组件的声明,指定android:exported属性,并通过tools:node="merge"合并原有配置:
<!-- 针对报错的Firebase内部服务 --> <service android:name="crc649aaf9c208817d9c3.FirebaseService" android:exported="false" tools:node="merge" /> <!-- 若有其他同类型报错组件,按相同格式添加 -->
注:Firebase内部服务无需对外暴露,
android:exported设为false即可;若后续功能异常,可尝试改为true。
2. 抑制命名空间重复警告
在<manifest>标签中添加tools:ignore="NamespaceConflict",消除多个依赖包Manifest命名空间重复的警告:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.amadaapp" tools:ignore="NamespaceConflict">
3. 升级Firebase依赖到最新版本
旧版Firebase SDK未适配Android 12+的android:exported要求,升级到最新稳定版可从根源避免此类问题。打开项目.csproj文件,确保Firebase相关包使用最新版本:
<PackageReference Include="Xamarin.Firebase.Messaging" Version="123.0.1" /> <PackageReference Include="Xamarin.Firebase.Analytics" Version="121.2.0" />
4. 清理废弃的Firebase组件
Manifest中声明的FirebaseInstanceIdService已被Firebase SDK废弃,直接删除该服务声明,改用FirebaseMessagingService的OnNewToken方法处理令牌更新:
// 在自定义FirebaseMessagingService中重写方法 public override void OnNewToken(string token) { base.OnNewToken(token); // 编写新令牌处理逻辑 }
5. 清理并重新构建项目
完成修改后执行以下操作确保生效:
- 删除项目目录下的
obj和bin文件夹 - 在Visual Studio中选择「项目→清理」
- 重新构建项目
内容的提问来源于stack exchange,提问作者Maniotto
相关产品推荐
相关产品推荐

