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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:37:32