【发布时间】:2022-01-11 11:07:51
【问题描述】:
我正在尝试通过将 build.gradle 中的目标 SDK 版本更改为 31 来将我的应用程序迁移到 android 12。
根据需要,我已将 android:exported 标志添加到清单文件中存在的每个活动/接收器/服务/提供者标签。但我仍然收到此错误。
Manifest merger failed : android:exported needs to be explicitly specified for <receiver>. 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.
所以我猜这个问题是由于任何 3rd 方库的清单包含一个没有android:exported 标志的接收器。
我还检查了合并的清单文件是否在任何第三方库的组件中缺少 android:exported。但在合并的清单文件中,所有活动/接收器/服务标签也都有导出标志。
那么我怎样才能找到导致问题的丢失的接收器。
【问题讨论】:
-
您可以尝试手动运行带有
--debug参数的gradle,希望日志显示错误发生时处理的是哪个第三方库。 -
@Robert,已经尝试过了,但没有成功。
-
然后您可以尝试检查应用程序构建目录以获取合并的清单文件。例如。检查
app/build/intermediates/merged_manifest和app/build/intermediates/packed_manifest希望合并的清单首先保存到磁盘,然后检查错误。 -
你为接收者设置了
android:exported="fasle"吗?
标签: android android-studio kotlin android-manifest android-12