少林寺方丈嘿嘿
少林寺方丈嘿嘿
  • 发布:2026-08-12 10:57
  • 更新:2026-08-12 11:01
  • 阅读:157

【报Bug】在Android壳子里面我之前的项目是uniappvue2项目,我现在放7月份更新支付arr包和核心包导致我的经纬度定位位置偏移

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 5.23

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: 荣耀

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.getLocation({
type: 'gcj02', //返回可以用于uni.openLocation的经纬度
success: async (locData) => {
const latitude = locData.latitude;
const longitude = locData.longitude;
const location = longitude + ',' + latitude;
const params = {
location,
latitude,
longitude,
};

    resolve(params);  
  },  
  fail: async (e) => {  
    const dataTime2 = new Date().getTime();  

    resolve(e);  
  },  
});

操作步骤:

uni.getLocation({
type: 'gcj02', //返回可以用于uni.openLocation的经纬度
success: async (locData) => {
const latitude = locData.latitude;
const longitude = locData.longitude;
const location = longitude + ',' + latitude;
const params = {
location,
latitude,
longitude,
};

    resolve(params);  
  },  
  fail: async (e) => {  
    const dataTime2 = new Date().getTime();  

    resolve(e);  
  },  
});

预期结果:

希望精确度在30以内

实际结果:

但是实际上有几百台手机包括华为荣耀vivo他们的定位精度是550,偏差非常严重[{"type":"gcj02","altitude":0,"latitude":22.555686,"longitude":113.941508,"speed":0,"accuracy":550,"errMsg":"getLocation:ok"}

bug描述:

我们的应用里面需要添加支付模块,https://nativesupport.dcloud.net.cn/UniMPDocs/UseModule/android/payment.html#%E6%94%AF%E4%BB%98%E5%AE%9D%E9%85%8D%E7%BD%AE我遵照官方文档添加了支付和uniapp-v8-release.aar核心库,现在我的APP出现定位的精确度非常低有的都到了550,有的偏移量到几公里以外了。我想问问是不是之前的"@dcloudio/uni-automator": "2.0.0-32320210825001",
"@dcloudio/uni-cli-shared": "2.0.0-32320210825001",
"@dcloudio/uni-migration": "2.0.0-32320210825001",
"@dcloudio/uni-template-compiler": "2.0.0-32320210825001",
"@dcloudio/uni-ui": "^1.4.4",
"@dcloudio/vue-cli-plugin-hbuilderx": "2.0.0-32320210825001",
"@dcloudio/vue-cli-plugin-uni": "2.0.0-32320210825001",
"@dcloudio/vue-cli-plugin-uni-optimize": "2.0.0-32320210825001",
"@dcloudio/webpack-uni-mp-loader": "2.0.0-32320210825001",
"@dcloudio/webpack-uni-pages-loader": "2.0.0-32320210825001",
"@typescript-eslint/eslint-plugin": "^4.31.0",
"@typescript-eslint/parser": "^4.31.0",
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "^4.5.13",
"@vue/cli-plugin-typescript": "*",
"@vue/cli-service": "~4.5.0",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/eslint-config-typescript": "^7.0.0",这个版本的uniapp不能够使用最新的核心包和支付依赖宝,同时又因为公司定位需要速度又能使用高精度定位,但是之前误差没有这么大,如果是AI回复你要搞清楚我之前是没有这种问题的确认定位 SDK 集成情况:请检查您的 Android 离线工程中是否集成了高德定位 SDK 或腾讯定位 SDK,并确认 Key 配置是否正确。
统一离线包版本:请严格对齐您的前端依赖版本与 Android 离线打包核心包的版本,避免因版本差异导致不可预期的冲突。
提供离线打包配置:如果排查后问题依旧,建议您提供 Android 离线工程的 build.gradle 依赖配置,以及 manifest.json 中 app-plus -> distribute -> sdkConfigs 节点下的定位配置,以便进一步分析。这些都是正常的我只是添加了阿里和微信的支付功能和更新uniapp-v8-release.aar核心库。然后就有一部分人使用新的APP后出现定位偏移量过大,定位是有返回经纬度的只是误差太大,还有以前我也没有配置高精度设置。

2026-08-12 10:57 负责人:无 分享
已邀请:
少林寺方丈嘿嘿

少林寺方丈嘿嘿 (作者) - 厉害了吧

确认定位 SDK 集成情况:请检查您的 Android 离线工程中是否集成了高德定位 SDK 或腾讯定位 SDK,并确认 Key 配置是否正确。
统一离线包版本:请严格对齐您的前端依赖版本与 Android 离线打包核心包的版本,避免因版本差异导致不可预期的冲突。
提供离线打包配置:如果排查后问题依旧,建议您提供 Android 离线工程的 build.gradle 依赖配置,以及 manifest.json 中 app-plus -> distribute -> sdkConfigs 节点下的定位配置,以便进一步分析。这肯定是正确的不然怎么会只有一部分人出现这种问题,我只是新增了支付依赖

Ask小助手

Ask小助手

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

感谢您的反馈。针对您提交的 Bug 报告,官方人员需要进行评审与分析,以下是具体的评审意见与排查建议:

1. Bug 反馈内容完整性评审

  • Bug 描述:描述较为清晰,交代了起因(集成支付与核心包)、现象(定位精度低至 550,偏移几公里)以及历史背景(之前误差较小)。但缺少关于定位 SDK 配置的说明,在 App 端获取 gcj02 坐标系必须配置第三方定位 SDK(如高德、腾讯等),需要补充 manifest.json 中关于定位模块的配置信息。
  • 代码示例与复现步骤:代码示例完整且可直接运行,复现步骤与代码结合度高。但由于问题涉及 Android 离线打包工程,仅凭 JS 代码无法直接复现,需要官方人员搭建完整的离线工程环境,这会拉长排查周期。
  • 预期结果与实际结果:预期结果合理,实际结果提供了返回的 JSON 数据(accuracy: 550),这为排查问题提供了有效线索。
  • 分类信息:包含了开发环境、HBuilderX 版本、手机系统与机型等信息,相对完整。
  • 附件说明:请注意,我无法识别附件内容,后续如需提供日志或截图,请直接以文本形式粘贴关键信息。

2. Bug 是否成立及原因分析

结合知识库与官方文档,针对您描述的情况,有以下几个关键方向需要排查:

1. Android 端 gcj02 与定位 SDK 的强关联性
根据官方文档说明,uni.getLocationtype 参数指定为 gcj02 时,在 App 端必须配置第三方定位 SDK 信息才可支持(参考 getLocation 兼容性文档)。如果您的离线打包工程中没有正确集成高德或腾讯定位 SDK,或者 SDK Key 配置失效,系统可能回退到基础定位方式,从而导致精度大幅下降。请检查您的离线工程是否正确引入了定位 SDK 的 aar 包,并配置了正确的 Key。

2. 离线核心包版本与 SDK 匹配问题
您提到项目使用了较旧版本的 uni-app 依赖(2.0.0-32320210825001),但更新了 7 月份的支付 aar 包和核心包(uniapp-v8-release.aar)。离线打包的核心运行包与前端编译器的版本必须保持一致,混用不同时期的核心包和编译产物极易导致原生模块(如定位、支付)行为异常甚至冲突。建议您核对离线包的版本号,并确保其与 HBuilderX 生成的 App 资源版本完全对应。

3. 高精度定位参数未开启
您提供的代码示例中,未开启高精度定位。根据文档,isHighAccuracy 参数可以开启高精度定位,highAccuracyExpireTime 可以设置高精度定位的超时时间(该值 3000ms 以上才有效果)。针对您对精度要求较高的场景,建议补充这些参数:

uni.getLocation({  
    type: 'gcj02',  
    isHighAccuracy: true, // 开启高精度定位  
    highAccuracyExpireTime: 5000, // 设置高精度定位超时时间  
    success: async (locData) => {   
        // ...  
    }  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

3. 官方建议与下一步操作

由于该问题涉及 Android 离线打包的底层库集成,为了更准确地定位问题,建议您:

  1. 确认定位 SDK 集成情况:请检查您的 Android 离线工程中是否集成了高德定位 SDK 或腾讯定位 SDK,并确认 Key 配置是否正确。
  2. 统一离线包版本:请严格对齐您的前端依赖版本与 Android 离线打包核心包的版本,避免因版本差异导致不可预期的冲突。
  3. 提供离线打包配置:如果排查后问题依旧,建议您提供 Android 离线工程的 build.gradle 依赖配置,以及 manifest.jsonapp-plus -> distribute -> sdkConfigs 节点下的定位配置,以便进一步分析。
内容为 AI 生成,仅供参考

要回复问题请先登录注册