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

适配Android12+遇Manifest合并失败 无<service>却报android:exported错误

报错根本原因

你项目依赖的第三方AAR/SDK内部的AndroidManifest.xml中包含了带intent-filter的<service>节点,且这些库没有针对Android12+适配添加android:exported属性。Manifest合并过程中会把所有依赖库的Manifest节点合并到最终的Manifest文件里,因此触发了编译报错。
你自己项目里的Manifest找不到对应节点、合并Manifest标签页没有显式报错,是因为部分低版本Android Studio的合并Manifest可视化面板不会主动提示未配置exported属性的第三方库组件。

排查解决步骤

  • 首先导出完整的合并后Manifest文件定位异常组件
    你可以在项目的app/build/intermediates/merged_manifest目录下找到对应构建变体的最终合并后AndroidManifest.xml,全局搜索<service标签,找到所有带<intent-filter>且没有配置android:exported的节点,记录对应的全类名。
  • 然后在主项目的AndroidManifest.xml中覆写该组件配置
    对找到的异常<service>节点,在主Manifest中声明相同的全类名,手动添加android:exported属性,同时添加tools:replace="android:exported"确保你的配置会覆盖三方库的原有配置,示例代码如下:
    <service
        android:name="com.xxx.xxx.三方库对应的Service类名"
        android:exported="false"
        tools:replace="android:exported">
        <!-- 原有的intent-filter配置可以直接保留 -->
        <intent-filter>
            <action android:name="xxx.xxx.xxx"/>
        </intent-filter>
    </service>
    
    注意:只有该Service需要对外暴露给其他应用调用时,才设置android:exported="true",绝大多数业务场景下设置为false即可
  • 如果完成上述操作后仍有报错,可以排查项目gradle依赖列表中的老旧三方库,将其升级到适配Android12+的版本,也可以直接解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:18:03