Android 12 适配之 "Android:exported"

发布时间 2023-08-08 11:27:31作者: R1cardo

Android 12 适配之 "Android:exported"

build.gradle 中的 targetSDKVersioncompileSdkVersion 改为 31,对应 Android 12

build 项目报错

Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com /guide /topics /manifest /activity -element#exported for details.

查看对应官网的解释

WX20230808-093417_2x

只要带有 intent-filter 标签的,就需要显式的指定 Android:exported 的值,activityreceiver

例如

QQ20230808-112339

方法 1

targetSDKVersioncompileSdkVersion 回退到 31 以下

方法 2

修改 AndroidManifest.xml 文件

将我们能改的 AndroidManifest.xml 文件中需要显式指定 Android:exported 的值都改掉,但是有一些三方库也没有针对 Android 12 做适配,由于在 Android build 过程中,会将所有的 AndroidManifest.xml 文件合并成一个文件,将其中的一些标签合并到一起
WX20230808-094451_2x

WX20230808-094641_2x

打开主项目的 AndroidManifest.xml 文件,查看 Merged Manifest,可以看到具体的报错和警告,发现有一个库:blockcanary 没有适配,这个库是用于检测程序卡顿的,看了一下最新的库都已经是 2017 年得了,只有先废弃,要是有需求的话再找替代的库

WX20230808-094833_2x

现在主项目和三方库的 AndroidManifest.xml 文件都没有问题了,再次运行成功。