[UTS蓝牙插件文档] 按需移除插件的权限
本插件会声明「蓝牙扫描 / 蓝牙连接 / 定位」等权限以覆盖全部能力。但实际业务中你未必用到全部能力,例如:
- 只做普通 BLE 主机连接,不需要 iBeacon 信标搜索,则不需要定位权限;
- 只做 BLE 主机,不需要外围设备(GATT Server)广播,则不需要
BLUETOOTH_ADVERTISE权限。
重要前提:移除权限只影响系统层面的权限声明与弹窗,不会删除插件代码。只要你不在业务里调用对应 API(如不调用
startBeaconDiscovery),就不会触发相关弹窗。移除权限请以“精简应用市场的权限清单、减少上架审核阻力”为目的,切勿在已使用该能力的情况下移除对应权限,否则相关 API 会因缺少权限而失败。
不同工程类型、不同平台的移除方式如下:
Android
uni-app x 工程(HBuilderX 4.71 及以上):
- 可视化:
manifest.json→ 「安卓 App 配置」→「权限配置」→「强制移除权限」,添加要移除的项; - 源码视图:在
manifest.json的app→distribute→android下配置excludePermissions,例如移除定位与广播权限:{ "app": { "distribute": { "android": { "excludePermissions": [ "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH_ADVERTISE\"/>" ] } } } }
传统 uni-app 工程:
- 可视化:
manifest.json→ 「App 模块配置」/「Android 权限配置」→「强制移除的权限」(<uses-permission .../>形式); - 注意:不建议用根目录
nativeResources/android/AndroidManifest.xml的tools:node="remove"方式移除权限,某些情况下可能不生效,推荐使用 manifest.json 的可视化配置。
iOS
iOS 侧的权限是「用途描述 Key」(如 NSLocationWhenInUseUsageDescription),声明了但未调用对应 API 时不会触发系统弹窗,也不影响上架,因此通常无需移除。
若确需覆盖(例如替换权限用途文案),可在工程根目录放置 Info.plist 覆盖对应 Key;插件自带的 Info.plist 中新增的 Key 会与主工程合并。
鸿蒙 NEXT
鸿蒙下 UTS 插件的 module.json5 权限会合并进主工程的 module.requestPermissions。若需移除,请在工程根目录的
harmony-configs/entry/src/main/module.json5 中自行维护 module.requestPermissions(等同覆盖该节点),仅保留你需要的权限项,例如:
{
"module": {
"requestPermissions": [
// 仅保留蓝牙权限,移除定位等不需要的权限
{ "name": "ohos.permission.ACCESS_BLUETOOTH" }
]
}
}
说明:
harmony-configs目录的配置会覆盖自动生成的鸿蒙工程,前提是 HBuilderX 在生成工程时会把该目录内容拷贝过去;修改后建议删除unpackage目录重新运行以确保生效。
注意:若移除ohos.permission.ACCESS_BLUETOOTH,则所有蓝牙功能(含普通扫描)都会失败;信标搜索与普通扫描共用此权限,无法只针对“去掉 beacon”单独移除。

浙公网安备 33010602011771号