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

已添加android:exported仍出现Android12+清单适配报错如何解决

核心原因

你自己主清单里的Activity已经正确配置了android:exported,报错是因为项目依赖的第三方库的清单文件中,存在带intent-filter但未显式声明android:exported的组件(Activity、Service、BroadcastReceiver都可能),清单合并时触发了Android12的规则校验。


解决步骤

第一步:定位出问题的组件

打开Android Studio中你项目的主AndroidManifest.xml文件,点击编辑器底部的「Merged Manifest」标签,就能查看所有合并后的清单内容,报错的组件会被红色高亮标记,直接就能看到对应的组件全类名和所属的依赖库。

第二步:修复问题

优先选择方案一:升级对应依赖库
你项目中依赖的多个库版本过旧未适配Android12,比如2.0-alpha-3版本的LeakCanary、11.1.0版本的Facebook SDK、alpha版本的Navigation Compose、旧版Firebase相关组件等,将这些库升级到官方已适配Android12的版本即可解决问题。

如果部分依赖库已停止维护无法升级,选择方案二:手动重写组件配置
在你主清单的<application>节点下,添加对应未配置exported的组件声明,显式指定android:exported的值,同时添加tools:node="merge"属性保证配置生效,示例如下:

<!-- 先在manifest根节点添加tools命名空间,没有的话补上 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.xyz.abc">

    <application
        ...>
        <!-- 重写出问题的组件,比如某个广播接收器 -->
        <receiver
            android:name="出问题的组件全类名"
            android:exported="false" <!-- 不需要外部应用调用就填false,需要就填true -->
            tools:node="merge" />
        <!-- 你的其他原有配置 -->
        <activity
            android:name="com.xyz.presentation.MainActivity"
            android:exported="true">
            ...
        </activity>
    </application>
</manifest>

注意事项

Android12的exported要求覆盖所有带intent-filter的四大组件,不止是Activity,Service、BroadcastReceiver如果带intent-filter也必须显式配置该属性,不要遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:24:04