uniapp安卓app打包后使用uni.chooselocation地址列表一直加载转圈问题如何解决?

在uniapp开发的安卓APP中,使用uni.chooseLocation选择地址时,地址列表一直处于加载转圈状态,无法正常显示。已确认在H5端和iOS端运行正常,仅在安卓打包后出现此问题。尝试过检查网络权限、更换高德/腾讯地图key、清理缓存等方法均无效。请问该如何解决?可能是什么原因导致的?

2 回复

检查网络权限和定位权限是否开启,确保高德/百度地图key配置正确。建议使用真机调试,检查定位服务是否正常。


在UniApp中,uni.chooseLocation 地址列表一直加载转圈的问题通常由以下原因导致,请按步骤排查和解决:

1. 检查网络权限

确保在 manifest.json 中已正确配置网络权限:

{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>"
        ]
      }
    }
  }
}

2. 配置高德或百度地图Key

uni.chooseLocation 依赖地图服务,需在 manifest.json 中配置有效的地图Key:

{
  "app-plus": {
    "maps": {
      "amap": {
        "key": "你的高德地图Key"
      },
      "baidu": {
        "key": "你的百度地图Key"
      }
    }
  }
}

注意

  • 在高德/百度开放平台申请Key时,包名SHA1必须与打包配置一致。
  • 测试时建议使用自定义基座,避免Key校验失败。

3. 检查定位权限

  • 在App启动时动态申请定位权限:
    uni.authorize({
      scope: 'scope.userLocation',
      success: () => {
        console.log('定位权限授权成功');
      },
      fail: () => {
        uni.showModal({
          content: '需要定位权限才能使用地址选择功能',
          showCancel: false
        });
      }
    });
    

4. 网络环境问题

  • 确保设备网络通畅,地图服务依赖网络请求。
  • 若使用企业证书打包,检查是否配置了合法域名(如高德API域名 *.amap.com)。

5. 使用自定义基座测试

在HBuilderX中制作自定义基座,确保Key和配置正确,避免正式打包后出现问题。

6. 替代方案

若问题持续,可改用第三方地图插件(如 uni-app 官方推荐的 map 组件 + POI搜索),或使用高德/百度SDK自行封装地址选择功能。

总结步骤:

  1. 确认网络和定位权限已开启。
  2. 检查地图Key配置是否正确(包名、SHA1匹配)。
  3. 通过自定义基座测试。
  4. 若仍失败,检查网络环境或更换地图服务商。

按照以上步骤操作,通常可解决地址列表加载问题。

回到顶部