适配Android12已加android:exported仍报清单合并错误如何解决
Android 12+ 清单合并android:exported报错排查方案
即使你自己主清单的所有Activity都添加了android:exported属性,仍然出现该报错,核心原因是引入的第三方依赖库中包含未显式声明android:exported的组件(Activity、Service、BroadcastReceiver、ContentProvider),可按以下步骤排查解决:
- 第一步:查看合并后的最终清单文件
打开Android Studio的AndroidManifest.xml文件,点击底部的「Merged Manifest」标签,即可查看所有依赖合并后的完整清单内容,筛选出所有未添加android:exported属性、且带有intent-filter的组件,记录组件的完整包名和类名。 - 第二步:在主清单中覆写缺失属性的第三方组件
首先在主AndroidManifest.xml的根<manifest>标签中添加tools命名空间:
然后对每一个找到的缺失属性的第三方组件,在主清单的xmlns:tools="http://schemas.android.com/tools"<application>节点内重新声明该组件,显式指定android:exported属性并添加替换规则,示例如下:
注意:如果组件是 launcher 入口组件或者需要对外接收其他应用调用,<!-- 替换为你找到的第三方组件完整类名 --> <activity android:name="com.third.package.ThirdPartyActivity" android:exported="false" tools:replace="android:exported" />android:exported设为true,其余内部使用的组件统一设为false即可。 - 第三步:检查其他类型组件的属性声明
该规则不止作用于Activity,所有targetSdkVersion >= 31的应用,带有intent-filter的Service、BroadcastReceiver、ContentProvider都必须显式声明android:exported属性,排查时不要遗漏这几类组件。 - 额外校验项
检查你自己声明的组件中android:exported是否存在拼写错误,拼写错误会导致属性不被系统识别,也会触发该报错。
内容的提问来源于stack exchange,提问作者Ritesh Chauhan
相关产品推荐
相关产品推荐

