3***@tmp.dcloud.io
3***@tmp.dcloud.io
  • 发布:10 分钟前
  • 更新:10 分钟前
  • 阅读:13

【报Bug】HBuilderX 5.33 传统云打包后 BLUETOOTH 仍带 maxSdkVersion=30,请协助确认清单合并来源

分类:uni-app

产品分类: 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

示例代码:

<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>

操作步骤:
  1. 使用 HBuilderX 5.33 正式版打开 uni-app Vue3 CLI 项目 AI-app。

  2. 在项目根目录 AndroidManifest.xml 中声明 BLUETOOTH、BLUETOOTH_ADMIN 权限,设置 tools:node="replace",不设置 android:maxSdkVersion。
    src/AndroidManifest.xml 中保留相同配置。
    manifest.json 的权限列表中不重复声明这两项旧蓝牙权限。

  3. 在 HBuilderX 中选择“发行 → 原生 App 云打包”,选择 Android、云端证书、传统打包、正式包,提交打包。

  4. 打包成功后下载 APK。本次文件为 UNI045F940_1110100638.apk,版本为 1.3.12(1312)。

  5. 使用 Android SDK 工具执行:
    aapt dump permissions UNI045F940_1110100638.apk

  6. 检查结果:
    BLUETOOTH 和 BLUETOOTH_ADMIN 仍带 maxSdkVersion=30,与自定义清单的覆盖预期不一致。

  7. 安装到一加 Ace 3 Pro(PJX110,Android 14 / ColorOS 14.1),授权麦克风及附近设备,完成耳机连接和鉴权后进入英语陪练。
    APP 检测旧 BLUETOOTH 权限为 false,无法启动耳机录音。

补充:第5~6步仅检查 APK 即可复现清单问题,不需要连接手机、耳机或访问第三方 SDK 服务。

预期结果:

自定义清单覆盖规则生效,最终 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 手机可以使用相同功能。

bug描述:

uni-app Vue3 CLI 项目,使用 HBuilderX 5.33 传统云打包、云端证书生成正式 APK。

项目在根目录 AndroidManifest.xml 中声明 BLUETOOTH、BLUETOOTH_ADMIN,并使用 tools:node="replace",没有设置 maxSdkVersion。
src/AndroidManifest.xml 中也保留了相同内容,以兼容源目录入口。
manifest.json 的自定义权限列表中未重复配置这两项旧权限。

复现步骤:

  1. 在 HBuilderX 中打开 AI-app 项目。
  2. 选择发行 → 原生 App 云打包。
  3. 选择 Android、传统打包、正式包、云端证书。
  4. 下载生成的 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 与自定义声明不一致,尚不能确认是配置位置、合并优先级还是打包服务问题。

10 分钟前 负责人:无 分享
已邀请:

要回复问题请先登录或注册