Android 12下Flutter报错“Bluetooth permission missing in manifest”求助
Android 12蓝牙权限缺失报错排查方案
针对你在Android 12设备上遇到的「Bluetooth permission missing in manifest」报错,即便已按官网要求添加权限仍未解决,可从以下几个方向排查:
- 核对权限声明位置:确保所有蓝牙相关权限都直接放在
<manifest>根标签下,不要嵌套在<application>或其他子标签内,否则系统无法识别。 - 补全Android 12专属危险权限:Android 12(API 31)拆分了原有的蓝牙权限,除传统的
BLUETOOTH、BLUETOOTH_ADMIN外,需根据你的功能需求添加对应危险权限:- 扫描蓝牙设备:添加
BLUETOOTH_SCAN - 连接蓝牙设备:添加
BLUETOOTH_CONNECT - 对外广播蓝牙信号:添加
BLUETOOTH_ADVERTISE
注意:这些危险权限仅在Manifest声明还不够,必须在运行时动态请求用户授权。
- 扫描蓝牙设备:添加
- 添加权限标记避免位置依赖:如果你的应用不需要通过蓝牙获取位置,给
BLUETOOTH_SCAN权限加上android:usesPermissionFlags="neverForLocation"属性,否则可能因位置权限未配置触发误报。示例如下:<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" /> - 确认targetSdkVersion配置:将
build.gradle中的targetSdkVersion设置为31或更高,否则Android 12的权限规则可能无法正常生效。 - 清理项目缓存并重构:执行IDE的「Clean Project」和「Rebuild Project」操作,排除缓存导致的配置不生效问题。
- 排查第三方工具误报:如果报错来自第三方SDK或lint检测工具,尝试暂时禁用相关工具,确认是否为系统原生报错。
内容的提问来源于stack exchange,提问作者zerozuro
相关产品推荐
相关产品推荐

