从 Android 应用程序调用时,Huawei Map Kit 抛出网络错误(代码 060001)

Huawei Map Kit throws Network Error (Code 060001) when calling it from Android app

我正在我的 Android 应用程序上实施 Map Kit。按照official documentation安装HMS Core SDK后,我有:

  1. 在 AppGallery Connect 上启用地图服务包、定位服务包和站点服务包。
  2. 添加了 agconnect-services.json
  3. 使用 URLEncoderutf-8 对我的 API 密钥进行了编码。
  4. 为我的发布版本和调试版本复制了我的 SHA-256 证书指纹(使用不同的密钥库条目)。
  5. 请求位置许可。
  6. 在加载 MapsInitializer 之前设置我的 API 键。

总而言之,我的代码如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        try {
            API_KEY = URLEncoder.encode(
                getString(R.string.api_key),
                "utf-8"
            )
            MapsInitializer.setApiKey(API_KEY)
        } catch (ignored: UnsupportedEncodingException) {
        }

        binding = ActivityMapBinding.inflate(layoutInflater)
        setContentView(binding.root)
        viewModel = ViewModelProvider(
            this,
            MapViewModel.MyViewModelFactory(application)
        )[MapViewModel::class.java]


        var mapViewBundle: Bundle? = null
        if (savedInstanceState != null) {
            mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY)
        }
        mMapView = binding.mapView
        mMapView.onCreate(mapViewBundle)
        mMapView.getMapAsync(this)
        siteInfo = binding.siteInfo
        siteInfo.visibility = View.GONE
        // ...
}

但是当我输入 activity 时,我得到的只是我在空白地图上的位置的蓝点和 ToastREQUEST_DENIED

检查日志,似乎没有 API 身份验证或签名错误,但很可能是 Petal Maps API 已关闭:

E/HmsMapKit_ErrorTraceLogPusher_4: cache error trace log : ErrorTraceLogDTO{ scenario = ACCESS_SERVICE_ERROR', message='060001 : NETWORK_ERROR'}
com.huawei.hms.maps.foundation.client.mac: *e*v*r*A*d*e*s*f*o* *R* *s*e*p*y*
    at com.huawei.hms.maps.foundation.client.mac$maa.b(Unknown Source:25)

这令人不安,因为 official Map Kit error codes documentation 中没有此错误代码的迹象。有谁知道发生了什么事?提前致谢!

更新

该问题已在最新版本的HMS Core中修复。尝试将HMS Core apk升级到最新版本,可能会解决此问题。

目前HMS Core最新版本为6.5.0.312.


感谢您提供有关此问题的信息。我们已将此问题反馈给研发团队处理,请问您的设备是否安装了HMS Core 6.4.0?建议回退到HMS Core 6.3版本apk。并且我们会尽快发布补丁包修复该问题。

解决了!这是我的配置:

  • HMS Core: 最新版本 14/03/2022 (6.4.0.306)

  • Map Kit: 截至 2022 年 3 月 14 日的最新版本 (implementation 'com.huawei.hms:maps:6.3.1.300')

主要原因: 我的 build.gradle 文件中缺少我的应用程序签名配置。

解决步骤:

  1. 删除了我现有的密钥库 (.jks)。 免责声明:如果您的应用程序在 AppGallery 中发布,您将失去更新该应用程序的能力。请作为最后的手段。

  2. 在我的 Android Studio 项目中创建了一个新的密钥库,在 app 目录下。

  3. release 生成了签名 APK 并获得了 SHA-256 指纹。

  4. 在 AppGallery Connect 中用新指纹替换了我以前的指纹。

  5. 在我的地图 activity 中,没有对我的 API 密钥进行编码(感谢雪莉!)

  6. 重建我的项目。

完整的说明是here