Android 12 或更高版本为目标平台,且包含使用intent-filter 过滤器的 activity、service或receiver,您必须为这些应用组件显式声明 android:exported 属性。
常规操作 查看AndroidManifest.xml文件,搜索intent-filter,然后添加好android:exported属性(如果应用组件包含 LAUNCHER 类别,请将 android:exported 设置为 true。在大多数其他情况下,请将 android:exported 设置为 false)即可正常在Android 12及以上版本安装apk。
但是,有时候会发现AndroidManifest.xml中所有包含了intent-filter处都设置android:exported任然报错。这是因为项目引用了第三个库导致,三方库里的activity、service或receiver使用了intent-filter,但却未声明android:exported 属性。
所以,我们按一下步骤排查三方库哪些activity、service或receiver使用了intent-filter,但却未声明android:exported 属性。
1.Rebuild Project 重新编译
2.编译完成后,在项目中找到 app => build => intermediates => merged_manifest => developDebug => AndroidManifest.xml。
3.打开AndroidManifest.xml,从中找到 涉及intent-filter过滤器且没有设置 android:exported 属性的 Activity/Service/Receiver,把它们复制到自己项目的AndroidManifest.xml文件中,并添加上android:exported 属性。
4.再执行 Clean Project 清理项目,然后 Rebuild Project 重新编译即可解决Android 12 intent-filter添加android:exported后任然报错的问题。