android - 如何改进在 Android 源代码中使用 HMS API 密钥
问题描述
关于 HMS API Key
在使用 HMS(Huawei Mobile Services)时,部分套件需要 API key。API key 可以从 AppGallery Connect -> [项目设置] -> [General Information] 获取
Android源码中HMS API key的重复定义
在源代码中,通常使用 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)
【案例二】
字符串.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))
但是,这些情况必须将 API 密钥直接放入源代码中。
实际上,使用 HSM 时,您必须从 AppGallery Connect 下载 agconnect-services.json 并将其放在 app 文件夹下。
如果您打开 agconnect-services.json,您会发现 API 密钥已经包含在内。
API key 会有重复的定义。它不利于源代码中的 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,可以取消它。
推荐阅读
- r - 如何以表格格式显示“pdfsearch”输出,其中包含可见的文本列、页码、行号?
- machine-learning - ValueError:“mean_squared_error”不是有效的评分值
- python-3.x - [Version 17.0.0.2] [Session 8085885] [Teradata SQL Driver] 接收 Start Response 消息头失败
- google-sheets - 基于列标题的 Google 电子表格查询计数
- android - 如何实现 API 调用以将数据从 Tizen Watch App 发送到 Companion App(iOS)
- python - Tkinter - 创建动态条目小部件
- c# - 投射文本框 KeyEventArgs
- sqlite - 移动应用程序的离线存储-数据传输到云-发布到应用程序商店。需要建议
- firebase - 如何在flutter中从云Firestore的许多用户帖子中获取最近的用户帖子?
- java - Hibernate JPA 更新多线程单实体