<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="io.dcloud.nativeresouce">
<uses-permission android:name="android.permission.BLUETOOTH"
tools:node="replace" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
tools:node="replace" />
</manifest>
- 发布:10 分钟前
- 更新:10 分钟前
- 阅读:13
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 25H2,OS Build 26200.9711(本机读取结果)
手机系统: Android
手机系统版本号: Android 14
手机厂商: 一加 / OnePlus
手机机型: 一加 Ace 3 Pro,PJX110,ColorOS 14.1
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: CLI
CLI版本号: 正式版
App下载地址或H5⽹址: https://app.liuyingyong.cn/build/download/ab873840-dcaa-11f1-9713-9b9f6b8e4bd3
示例代码:
操作步骤:
-
使用 HBuilderX 5.33 正式版打开 uni-app Vue3 CLI 项目 AI-app。
-
在项目根目录 AndroidManifest.xml 中声明 BLUETOOTH、BLUETOOTH_ADMIN 权限,设置 tools:node="replace",不设置 android:maxSdkVersion。
src/AndroidManifest.xml 中保留相同配置。
manifest.json 的权限列表中不重复声明这两项旧蓝牙权限。
-
在 HBuilderX 中选择“发行 → 原生 App 云打包”,选择 Android、云端证书、传统打包、正式包,提交打包。
-
打包成功后下载 APK。本次文件为 UNI045F940_1110100638.apk,版本为 1.3.12(1312)。
-
使用 Android SDK 工具执行:
aapt dump permissions UNI045F940_1110100638.apk
-
检查结果:
BLUETOOTH 和 BLUETOOTH_ADMIN 仍带 maxSdkVersion=30,与自定义清单的覆盖预期不一致。
-
安装到一加 Ace 3 Pro(PJX110,Android 14 / ColorOS 14.1),授权麦克风及附近设备,完成耳机连接和鉴权后进入英语陪练。
APP 检测旧 BLUETOOTH 权限为 false,无法启动耳机录音。
补充:第5~6步仅检查 APK 即可复现清单问题,不需要连接手机、耳机或访问第三方 SDK 服务。
-
使用 HBuilderX 5.33 正式版打开 uni-app Vue3 CLI 项目 AI-app。
-
在项目根目录 AndroidManifest.xml 中声明 BLUETOOTH、BLUETOOTH_ADMIN 权限,设置 tools:node="replace",不设置 android:maxSdkVersion。
src/AndroidManifest.xml 中保留相同配置。
manifest.json 的权限列表中不重复声明这两项旧蓝牙权限。 -
在 HBuilderX 中选择“发行 → 原生 App 云打包”,选择 Android、云端证书、传统打包、正式包,提交打包。
-
打包成功后下载 APK。本次文件为 UNI045F940_1110100638.apk,版本为 1.3.12(1312)。
-
使用 Android SDK 工具执行:
aapt dump permissions UNI045F940_1110100638.apk -
检查结果:
BLUETOOTH 和 BLUETOOTH_ADMIN 仍带 maxSdkVersion=30,与自定义清单的覆盖预期不一致。 -
安装到一加 Ace 3 Pro(PJX110,Android 14 / ColorOS 14.1),授权麦克风及附近设备,完成耳机连接和鉴权后进入英语陪练。
APP 检测旧 BLUETOOTH 权限为 false,无法启动耳机录音。
补充:第5~6步仅检查 APK 即可复现清单问题,不需要连接手机、耳机或访问第三方 SDK 服务。
预期结果:
自定义清单覆盖规则生效,最终 APK 中 BLUETOOTH、BLUETOOTH_ADMIN 不带 maxSdkVersion 限制;或者请明确说明当前配置为何不能生效及正确配置方式。
自定义清单覆盖规则生效,最终 APK 中 BLUETOOTH、BLUETOOTH_ADMIN 不带 maxSdkVersion 限制;或者请明确说明当前配置为何不能生效及正确配置方式。
实际结果:
云打包成功,但 aapt 检查结果仍为:
uses-permission: name='android.permission.BLUETOOTH' maxSdkVersion='30'
uses-permission: name='android.permission.BLUETOOTH_ADMIN' maxSdkVersion='30'
BLUETOOTH_CONNECT、RECORD_AUDIO 已声明。
Android 14 手机检查旧 BLUETOOTH 权限为 false,SDK 耳机录音此前报 SecurityException: Need BLUETOOTH permission。
Android 10 手机可以使用相同功能。
云打包成功,但 aapt 检查结果仍为:
uses-permission: name='android.permission.BLUETOOTH' maxSdkVersion='30'
uses-permission: name='android.permission.BLUETOOTH_ADMIN' maxSdkVersion='30'
BLUETOOTH_CONNECT、RECORD_AUDIO 已声明。
Android 14 手机检查旧 BLUETOOTH 权限为 false,SDK 耳机录音此前报 SecurityException: Need BLUETOOTH permission。
Android 10 手机可以使用相同功能。
bug描述:
uni-app Vue3 CLI 项目,使用 HBuilderX 5.33 传统云打包、云端证书生成正式 APK。
项目在根目录 AndroidManifest.xml 中声明 BLUETOOTH、BLUETOOTH_ADMIN,并使用 tools:node="replace",没有设置 maxSdkVersion。
src/AndroidManifest.xml 中也保留了相同内容,以兼容源目录入口。
manifest.json 的自定义权限列表中未重复配置这两项旧权限。
复现步骤:
- 在 HBuilderX 中打开 AI-app 项目。
- 选择发行 → 原生 App 云打包。
- 选择 Android、传统打包、正式包、云端证书。
- 下载生成的 APK,使用 Android SDK aapt 检查权限清单。
检查命令:
aapt dump permissions UNI045F940_1110100638.apk
APK 版本:1.3.12,versionCode=1312。
AppID:UNI045F940。
Android 包名:uni.app.UNIFDA04DA。
APK targetSdkVersion=28。
请协助确认:
应用级自定义 AndroidManifest.xml 是否实际参与了云端合并?
最终 maxSdkVersion=30 来自哪个清单或打包处理步骤?
当前 CLI 项目的正确覆盖方式是什么?
目前仅确认最终 APK 与自定义声明不一致,尚不能确认是配置位置、合并优先级还是打包服务问题。
0 个回复