欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
好的,我们来评审一下这个 bug 反馈。
一、 反馈内容完整性评审
这份反馈的质量非常高,可以说是教科书级别的 bug 反馈,要点明确,信息详实。
- BUG 标题:清晰准确,“传统云打包 Geolocation模块未将ACCESS_FINE_LOCATION写入APK manifest,定位权限失效” 一句话概括了问题核心:打包方式、涉及模块、根本原因和最终现象。
- BUG 描述:非常详尽。不仅描述了现象(权限页无选项、
requestPermissions 秒拒、getLocation 报错),还提供了关键的排查证据(pm dump 结果有 BACKGROUND_LOCATION 无 FINE/COARSE_LOCATION),并给出了一个正常项目的对比案例,极大地缩小了问题排查范围。这对于开发人员定位问题至关重要,无需二次沟通。
- 代码示例:提供了
manifest.json 的关键配置片段,简洁明了,直指问题核心配置,是完全可以直接用于验证的。
- 复现步骤:步骤清晰且可操作。从配置
manifest.json 到选择打包方式,再到使用 adb 命令验证结果,形成闭环。任何官方人员都可以根据这些步骤准确地复现问题。
- 预期结果:合理且正确。
ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 是 Android 定位功能的基础权限,在配置了 Geolocation 模块和显式声明后,理应出现在最终的 AndroidManifest.xml 中。
- 实际结果:描述客观,通过
adb 命令的输出结果作为证据,有力地证明了问题所在,这是一个不符合预期的、不正常的结果。
- 分类信息:非常完整。提供了 PC 环境、HBuilderX 版本(5.03 正式版)、手机 OS 平台与版本(Android 15)、Vue 版本、手机厂商与型号,这些都是排查兼容性问题的关键信息。
结论:该反馈内容完整,无需补充任何信息,官方人员可以直接着手处理。
二、 问题是否成立
该 Bug 成立,且是一个在特定版本下已知的、由配置结构引起的问题。
根据知识库中的信息,此问题的根源在于 manifest.json 中权限配置的节点位置不符合 HBuilderX 5.03 版本的要求。
- 配置结构变更:从 HBuilderX 4.71 版本开始,Android 平台的额外权限配置节点从
app -> distribute -> android -> permissions 变更到了 app-android -> distribute -> permissions。
- 用户配置分析:用户在反馈中提供的配置仍然使用的是旧版结构:
"app-plus": {
"distribute": {
"android": {
"permissions": ["<uses-permission ... />"]
}
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
这个结构在 HBuilderX 5.03 版本中已经失效,导致云打包服务无法正确解析该节点下的权限声明,因此打包后的 APK 中缺失了 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限。而 ACCESS_BACKGROUND_LOCATION 之所以存在,可能是因为系统或其他模块自动添加的。
- 知识库依据:在优先知识库 “提交到云端打包报错 appid: unif82eb56” 和 “uniapp云平台打包,出现这种问题,说是Hbuilder版本的问题?” 这两个条目中,都明确指出了新的配置格式和旧格式导致报错的案例,这与您遇到的问题本质相同。
- 社区佐证:ask 社区知识库中的 “下面是我的manifest配置文件 打包后 应用没有位置权限 但是我已经添加了定位模块和对应的位置权限” 也反映了高度相似的问题和配置,进一步佐证了这是一个因版本升级带来的常见配置问题。
三、 是否为基本概念问题
这并非一个基本的编程概念问题,而是由于 DCloud 平台(HBuilderX)在特定版本中修改了专有的配置规范(manifest.json 的结构)所导致的。用户按照旧版规范进行配置,在新版工具中不再生效。
解决方案
您需要将 manifest.json 源码视图中 app-plus 节点下的 android.permissions 配置,移动到 app-android 节点下。请按照以下格式修改:
- 在 HBuilderX 中打开
manifest.json 的源码视图。
- 找到
"app-plus" -> "distribute" -> "android" -> "permissions" 节点,将其删除或注释掉。
- 在
manifest.json 根节点下,找到或新增 "app-android" 节点,并在此节点内添加 "distribute" -> "permissions" 配置。
修改后的代码示例如下:
{
// ... 其他配置 ...
"app-plus": {
"modules": {
"Geolocation": {}
},
"distribute": {
"android": {
// "permissions": [ // <-- 删除或注释掉这里的旧配置
// "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
// "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>"
// ],
"autoSdkPermissions": true,
"targetSdkVersion": 29
},
"sdkConfigs": {
"geolocation": {
"system": {
"__platform__": ["ios", "android"]
}
}
}
}
},
// 新增 app-android 节点进行配置
"app-android": {
"distribute": {
"permissions": [
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>"
]
}
}
// ... 其他配置 ...
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
修改配置后,重新进行云打包,问题即可解决。
1 个回复
Ask小助手 - Ask社区AI助手
好的,我们来评审一下这个 bug 反馈。
一、 反馈内容完整性评审
这份反馈的质量非常高,可以说是教科书级别的 bug 反馈,要点明确,信息详实。
requestPermissions秒拒、getLocation报错),还提供了关键的排查证据(pm dump结果有BACKGROUND_LOCATION无FINE/COARSE_LOCATION),并给出了一个正常项目的对比案例,极大地缩小了问题排查范围。这对于开发人员定位问题至关重要,无需二次沟通。manifest.json的关键配置片段,简洁明了,直指问题核心配置,是完全可以直接用于验证的。manifest.json到选择打包方式,再到使用adb命令验证结果,形成闭环。任何官方人员都可以根据这些步骤准确地复现问题。ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION是 Android 定位功能的基础权限,在配置了 Geolocation 模块和显式声明后,理应出现在最终的AndroidManifest.xml中。adb命令的输出结果作为证据,有力地证明了问题所在,这是一个不符合预期的、不正常的结果。结论:该反馈内容完整,无需补充任何信息,官方人员可以直接着手处理。
二、 问题是否成立
该 Bug 成立,且是一个在特定版本下已知的、由配置结构引起的问题。
根据知识库中的信息,此问题的根源在于
manifest.json中权限配置的节点位置不符合 HBuilderX 5.03 版本的要求。app -> distribute -> android -> permissions变更到了app-android -> distribute -> permissions。三、 是否为基本概念问题
这并非一个基本的编程概念问题,而是由于 DCloud 平台(HBuilderX)在特定版本中修改了专有的配置规范(
manifest.json的结构)所导致的。用户按照旧版规范进行配置,在新版工具中不再生效。解决方案
您需要将
manifest.json源码视图中app-plus节点下的android.permissions配置,移动到app-android节点下。请按照以下格式修改:manifest.json的源码视图。"app-plus"->"distribute"->"android"->"permissions"节点,将其删除或注释掉。manifest.json根节点下,找到或新增"app-android"节点,并在此节点内添加"distribute"->"permissions"配置。修改后的代码示例如下:
修改配置后,重新进行云打包,问题即可解决。
要回复问题请先登录或注册
公告
更多>相关问题