Android 12 适配之 "Android:exported"
Android 12 适配之 "Android:exported"
将 build.gradle 中的 targetSDKVersion 和 compileSdkVersion 改为 31,对应 Android 12
build 项目报错
Apps targeting Android 12 and higher are required to specify an explicit value for
android:exportedwhen the corresponding component has an intent filter defined. See https://developer.android.com /guide /topics /manifest /activity -element#exported for details.
查看对应官网的解释

只要带有 intent-filter 标签的,就需要显式的指定 Android:exported 的值,activity、receiver 等
例如

方法 1
targetSDKVersion 和 compileSdkVersion 回退到 31 以下
方法 2
修改 AndroidManifest.xml 文件
将我们能改的 AndroidManifest.xml 文件中需要显式指定 Android:exported 的值都改掉,但是有一些三方库也没有针对 Android 12 做适配,由于在 Android build 过程中,会将所有的 AndroidManifest.xml 文件合并成一个文件,将其中的一些标签合并到一起


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

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

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号