8***@qq.com
8***@qq.com
  • 发布:2026-05-11 18:16
  • 更新:2026-05-11 18:18
  • 阅读:23

5.0.06Hbuilder +android +通过uni.openLocation打开地图,app闪退

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 15.3

HBuilderX类型: 正式

HBuilderX版本号: 5.06

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: mix 3

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://link.vvstc.com/index.html?id=com.kwrzcu.kcfsod

示例代码:

export const openLocation = (paras: any) => {
// openLocation打开的腾讯地图为火星坐标,需转换
const type = paras.type || 'wgs84'
const gcj02 = togcj02(type, paras)
uni.openLocation({
latitude: gcj02.latitude, // 纬度,浮点数,范围为90 ~ -90
longitude: gcj02.longitude, // 经度,浮点数,范围为180 ~ -180。
name: paras.name, // 位置名
address: paras.address || '', // 地址详情说明
scale: 15, // 地图缩放级别,整形值,范围从1~28。默认为最大,
fail: (err) => {
log('openLocation fail: ', err)
}
})
}

操作步骤:

打开信息详情界面 → 点击地址 → 进入地图页面一直未加载完成 → App 闪退。
调用的代码 点击地址 调用 uni.openLocation。 参数传入没有问题,同样的在苹果打开是正常的,三星也是正常的。

预期结果:

app 闪退

实际结果:

app 闪退

bug描述:

Android App 奔溃问题

1. 奔溃场景

在android app中
打开信息详情界面 → 点击地址 → 进入地图页面一直未加载完成 → App 闪退。
调用的代码 点击地址 调用 uni.openLocation。 参数传入没有问题,同样的在苹果打开是正常的,三星也是正常的。

2026-05-11 18:16 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为DCloud官方人员,我对这个bug反馈进行评审,评价如下:

这个反馈提供了关键信息,但完整性上有所欠缺,目前无法直接判定为一个有效的bug。具体分析如下:

反馈内容完整性评价

  1. BUG描述:描述比较清晰,说明了在特定Android设备上调用uni.openLocation时,地图页面长时间加载后闪退。但缺少一个关键点:地图页面是显示空白,还是有加载出部分内容后闪退? 这个细节有助于判断是地图SDK初始化问题还是渲染问题。

  2. 代码示例:提供的代码片段展示了openLocation的调用逻辑,并进行了坐标转换。代码本身看起来没有明显问题。但是,代码示例不完整,无法直接运行,因为缺少 togcj02 函数的具体实现,官方人员无法直接复现你的完整逻辑。

  3. 复现步骤:步骤描述清晰,结合代码示例基本可以理解操作流程。但是,根据现有信息,官方人员可能无法稳定复现。因为你提到“同样的在苹果打开是正常的,三星也是正常的”,这说明问题可能和特定机型(小米 Mix 3)或系统环境有关。你需要补充更多有助于复现问题或定位原因的信息,比如该设备上是否安装并登录了高德地图App、发生闪退时HBuilderX控制台是否有更详细的错误日志输出。

  4. 预期结果:你填写的预期结果是“app 闪退”,这显然不合理。预期应该是“正常打开地图并显示指定位置”。这部分可能是个笔误。

  5. 实际结果:实际结果是“app 闪退”,这是一个需要解决的问题,不是误报。

  6. 分类信息:基本信息比较完整,提供了开发环境、HBuilderX版本、手机系统、设备型号等。但有一个重要的分类信息缺失:你未说明当前页面的类型是 vue 页面还是 nvue 页面,以及打包方式是云打包还是离线打包。这对于地图问题(尤其是nvue页面直接使用原生渲染)的排查至关重要。

Bug是否成立及原因分析

根据知识库,App端使用地图相关功能(包括uni.openLocation)需要正确配置三方地图SDK。

  1. 地图配置检查:知识库明确指出,App端uni.openLocation打开的是高德地图,且打包后必须由开发者在manifest.json中配置高德地图的AppKey,并确保包名、AppKey、证书信息匹配。真机运行或自定义基座调试时需要使用自定义基座来生效这些配置。 详情参考

    • 排查方向:请检查你在小米 Mix 3上运行的是否为自定义基座,并且manifest.json中已正确配置高德地图的AppKey。如果配置不正确,在特定环境下就可能导致地图服务初始化失败而闪退。
  2. 页面类型与内存问题:知识库的ISSUE系统记录显示,在自定义基座运行时,如果项目页面元素过于复杂,可能会因内存溢出(OOM)导致闪退。 查看 ISSUE 详情

    • 排查方向:如果你的页面是nvue,且页面结构复杂,或在地图页面加载的同时有其他大量消耗内存的操作,也可能触发闪退。

建议补充的信息和排查步骤

为了能更准确地定位问题,建议你补充以下信息:

  1. 明确告知你的项目页面类型是 vue 还是 nvue
  2. 明确告知你的打包调试方式,是云打包还是离线打包?如果是真机调试,使用的是标准基座还是自定义基座
  3. 确认 manifest.json 中是否已正确配置高德地图的 AppKey。
  4. 提供闪退发生时的 HBuilderX 控制台完整日志,这通常包含关键的崩溃堆栈信息,对定位问题最有帮助。
  5. 检查该小米手机的系统“设置”中,是否给予了你的App“定位”和“存储”等必要权限。

综上所述,这个反馈为问题的解决提供了明确的方向,但缺乏关键的配置信息和运行环境信息,目前无法被确认为一个代码层面的bug。更大概率是高德地图SDK配置问题,或特定设备上的兼容性/内存问题。建议你按照上述排查方向进行检查和补充信息。

内容为 AI 生成,仅供参考

要回复问题请先登录注册