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

Android项目导出遇Manifest合并失败(已配置android:exported=true)

排查与解决Manifest合并失败问题

1. 查看完整的Manifest合并日志

Manifest merger failed with multiple errors, see logs只是笼统提示,必须查看详细日志才能定位具体冲突:

  • 在Android Studio中打开底部的Build面板,切换到Merge Errors标签页,这里会列出所有冲突的具体位置(比如哪个组件缺少android:exported、属性值冲突等)。
  • 若找不到Build面板,可通过View > Tool Windows > Build路径打开。

2. 检查所有组件的android:exported属性

仅给Activity添加android:exported是不够的,targetSdk 33要求所有带有<intent-filter>的组件(包括Activity、Service、BroadcastReceiver、ContentProvider)都必须显式声明该属性:

  • 检查自身Manifest中所有带<intent-filter>的组件,确保都设置了android:exported="true"或false(根据组件是否需要对外暴露决定)。
  • 排查第三方依赖库的Manifest:play-services-ads:22.0.0本身已适配targetSdk 33,但项目中其他依赖库可能未适配,导致其Manifest内的组件缺失android:exported。可通过./gradlew app:dependencies命令生成依赖树,找到未适配的库,要么升级该库到适配33的版本,要么在自身Manifest中通过tools:node="merge"或tools:node="replace"覆盖冲突组件的属性。

3. 处理play-services-ads升级带来的Manifest冲突

play-services-ads:22.0.0相对于旧版本,可能新增或修改了Manifest组件配置:

  • 打开Android Studio的app > manifests > Merged Manifest标签页,查看最终合并后的Manifest,对比自身配置与依赖库配置,找到红色标记的冲突项。
  • 若广告库新增的Service/BroadcastReceiver存在属性冲突,可在自身Manifest中重新声明该组件并调整属性。

4. 检查targetSdk 33的其他适配要求

升级到targetSdk 33后,还有其他Manifest相关要求可能引发失败:

  • 权限变更:比如广告库可能需要POST_NOTIFICATIONS权限,需在Manifest中显式声明。
  • 组件属性调整:部分组件的android:permission等属性需适配新SDK规则。

示例:修复依赖库组件的android:exported缺失问题

若发现某第三方库的Service未声明android:exported,可在自身Manifest中添加如下代码覆盖:

<service
    android:name="com.example.thirdparty.TargetService"
    android:exported="false"
    tools:node="merge" />

tools:node="merge"会合并自定义属性与依赖库原有属性,避免完全替换导致功能异常。


内容的提问来源于stack exchange,提问作者android-2030

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:28