问题描述
关于HMS API密钥
使用HMS(华为移动服务)时,某些套件需要API密钥。可以从Appgallery Connect-> [项目设置]-> [常规信息]
获取API密钥。Android源代码中HMS API密钥的重复定义
在内部源代码中,通常如下使用API密钥。
[案例1]
MainActivity.kt
// For example : private val API_KEY = "CgB6e3x9iW/qiE9l9wAUPK0e/bJQe5uIgTlYUD4bPc8gzjriSVxDDzX2fAVjCVdUHkP+tan0Xi0sf4tj7t11TJJe"
private val API_KEY = "Your API key"
// If using map kit
MapsInitializer.setApiKey(API_KEY)
[情况2]
strings.xml
<!-- For example : <string name="api_key">CgB6e3x9iW/qiE9l9wAUPK0e/bJQe5uIgTlYUD4bPc8gzjriSVxDDzX2fAVjCVdUHkP+tan0Xi0sf4tj7t11TJJe</string> -->
<string name="api_key">Your API key</string>
MainActivity.kt
// If using map kit
MapsInitializer.setApiKey(getString(R.string.api_key))
实际上,在使用HSM时,您必须从Appgallery Connect下载agconnect-services.json并将其放在app文件夹下。
如果打开agconnect-services.json,您会发现该API密钥已包含在内。
将有重复的API密钥定义。在源代码中对API密钥管理不利。
解决方案
最好的解决方案是直接在agconnect-services.json中使用API密钥,并且不要在源代码中放入其他定义。以下是一个示例。
MainActivity.kt
val api_key = AGConnectServicesConfig.fromContext(applicationContext).getString("client/api_key")
// If using map kit
MapsInitializer.setApiKey(api_key)
解决方法
我最近使用了地图套件。我使用的是地图套件版本:
implementation 'com.huawei.hms:maps:5.1.0.300'
现在更简单了。 如果包含agconnect-services.json和*.jks,并且配置为华为官网: https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/android-sdk-config-agc-0000001061560289-V5
MapsInitializer.setApiKey(api_key) 不需要写入。
// MapsInitializer.setApiKey("Your API key");
官方SDK demo的java代码中可能包含MapsInitializer.setApiKey("Your API key"); 如果已经配置了 agconnect-services.json,可以取消它。