You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12 Merged Manifest报错android:exported未指定如何解决

问题原因

你的报错指向的是第三方AltBeacon库中的StartupBroadcastReceiver组件,并非你自己声明的Activity。你自己的清单里已经给带intent filter的Activity加了android:exported属性,但你引入的AltBeacon库旧版本没有适配Android 12的规则,其内部的广播接收器带intent filter却没显式声明exported属性,合并manifest的时候就会触发该错误。

修复方案

方案1:升级AltBeacon库(优先推荐)

AltBeacon官方从2.19版本开始已经完成Android 12适配,你只需要把项目中AltBeacon库的依赖升级到2.19及以上的稳定版本即可解决问题。
修改Module级build.gradle中的依赖声明:

dependencies {
    // 替换原有旧版本的beacon库依赖
    implementation 'org.altbeacon:android-beacon-library:2.20.0'
}

方案2:手动覆盖组件属性(无法升级库时使用)

如果项目有兼容要求不能升级库,可以在你自己的AndroidManifest.xml中显式声明该广播接收器,指定exported属性,manifest合并时会优先采用你本地的配置。

  1. 先给manifest根节点添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.xxxxxx.android_sample">
  1. 在标签内添加该接收器的声明:
<receiver
    android:name="org.altbeacon.beacon.startup.StartupBroadcastReceiver"
    android:exported="false"
    tools:node="merge" />

exported取值说明:如果不需要外部应用触发该广播接收器,设为false即可;如果有外部交互需求,再设为true。

通用排查方案

如果修复后仍有同类报错,可以在Android Studio中打开AndroidManifest.xml,点击底部的「Merged Manifest」标签,查看所有合并后的组件,找到所有带intent filter却没声明exported的组件,用上述手动覆盖的方式逐个处理即可。

内容的提问来源于stack exchange,提问作者braop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:06:03