栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 12适配安全组件导出设置`android:exported` 指定显式值”

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 12适配安全组件导出设置`android:exported` 指定显式值”

如何解决编译错误:“面向 Android 12 及更高版本的应用需要为 android:exported 指定显式值”问题

如果您的应用针对 Android12,则文档说:
如果您的应用面向 Android 12 并包含使用Intent 过滤器的活动、服务或广播接收器,
则您必须显式声明这些应用组件的属性android:exported

因此,我为所有在 AndroidManifest.xml 中使用意图过滤器的组件显式声明android:exported了属性,但仍然因编译错误而失败:

清单合并失败并出现多个错误,请参阅日志错误:当相应组件定义了意图过滤器时,
需要针对 Android 12 及更高版本的应用程序为 `android:exported` 指定显式值
发生了什么 ??

为什么所有的activity、server和Receiver都配置exported了,还报这个错误?

您需要检查“合并”清单

该文件说:

您的 APK 文件只能包含一个AndroidManifest.xml文件,但您的 Android Studio 项目可能包含多个文件——由主要源集、构建变体和导入的库提供。因此,在构建您的应用程序时,Gradle 构建会将所有清单文件合并为一个打包到您的 APK 中的清单文件。

提示:使用合并清单视图预览合并清单的结果并查找冲突错误。

因此,您还需要检查导入的库,并且要预览合并的清单,您可以使用编辑器底部的Merged Manifest 选项卡。

此时您需要将 targetSdkVersion暂时降低到 30 才能进行编译。

在 我的项目中,我发现下面显示的这些来自外部库的组件没有为 `android:exported` 指定显式值,即使这些组件声明了意图过滤器。

来自外部库的这些组件声明了意图过滤器,但未指定导出的属性

当我在 Merged Manifest 视图中单击这些组件时,我发现这些组件来自androidx.test:core:1.3.0。

但是,我的项目确实明确地实现了这个库,所以我必须找到其他依赖于“androidx.test:core:1.3.0”的库。

替换库的提示

所以我不得不查找和替换依赖于 androidx.test:core:1.3.0 的库。

总结

如果您指定了exported 属性也编译失败,原因可能是您的外部库。要找出这一点,您可以使用合并清单视图进行检查。要找到合适版本的库替换或者升级。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号