已设置所有组件android:exported仍触发Android12+清单合并报错问题
报错根本原因
你仅检查了自己在主Manifest中声明的组件,但Target SDK ≥31(Android 12+)时,所有参与Manifest合并的组件(包括你引入的第三方AAR、远程依赖库中自带的Activity、Service、BroadcastReceiver),只要带有intent-filter,都必须显式声明android:exported属性,缺省就会触发合并失败报错。
解决方案
- 第一步:定位缺失配置的组件
打开Android Studio中你项目的AndroidManifest.xml文件,点击编辑器底部的「Merged Manifest」标签,查看所有合并后的组件列表,找到带有intent-filter、但未显式声明android:exported的组件,记录其完整类名。如果Merged Manifest中不好定位,也可以查看完整的构建失败日志,日志中会明确打印出缺失属性的组件信息。 - 第二步:在主Manifest中覆盖配置
在你主项目的AndroidManifest.xml的<application>节点下,重新声明该缺失配置的组件,显式指定android:exported属性,并添加覆盖规则,示例如下:<!-- 以下为示例,替换成你找到的第三方组件全类名 --> <activity android:name="com.third.package.ThirdActivity" android:exported="false" <!-- 若该组件需要对外开放调用则填true,内部使用填false --> tools:replace="android:exported" /> - 补充检查项
确认你自己项目中所有带有intent-filter的Service、BroadcastReceiver组件,也都已经显式配置了android:exported属性,这类组件缺省配置同样会触发该报错。
内容的提问来源于stack exchange,提问作者c-an
相关产品推荐
相关产品推荐

