Android在此以编程方式映射设置api键
我在这里使用的是maps Premium SDK 3.15,文档中说要在android清单文件中设置id、令牌和许可证。我在build.gradle中将id、token和license设置为清单占位符,并放入Android.manifest,如下所示Android在此以编程方式映射设置api键,android,api-key,heremaps,heremaps-android-sdk,Android,Api Key,Heremaps,Heremaps Android Sdk,我在这里使用的是maps Premium SDK 3.15,文档中说要在android清单文件中设置id、令牌和许可证。我在build.gradle中将id、token和license设置为清单占位符,并放入Android.manifest,如下所示 <!-- Here Maps --> <meta-data android:name="com.here.android.maps.appid" android:value="${here_map_
<!-- Here Maps -->
<meta-data android:name="com.here.android.maps.appid"
android:value="${here_map_app_id}"/>
<meta-data android:name="com.here.android.maps.apptoken"
android:value="${here_map_app_code}"/>
<meta-data android:name="com.here.android.maps.license.key"
android:value="${here_map_licence_key}"/>
我的项目进行了静态代码分析,其中一个发现是“应用程序代码中存在硬编码的秘密令牌”。这意味着我将here map凭证保存在build.gradle中,这不正常
我的问题是,我应该将这些凭证保存在哪里,是否有一种方法可以让安装程序以编程方式而不是Android映射SDK。清单(在这种情况下,我不会保留在项目中并从后端检索)不,除非通过gradle注入,否则您不能以编程方式更改清单文件或资源。根据这里的地图:只有一种方法可以设置凭据,但是您可以采取一些安全措施参见我想这里已经回答了这个问题 很明显,谷歌地图不支持动态API密钥插入 对于不希望在项目中硬编码的任何其他动态API键,可以查看Firebase RemoteConfig。 这里是链接, 您可以使用清单占位符: 然后将密钥放入env或
local.properties
中,如下所示
(build.gradle
)
在AndroidManifest.xml
中:
No这是不可能的。但是您可以使用Dexguard,请参见:
manifestPlaceholders = [
HERE_SDK_APP_ID : System.getenv("HERE_SDK_APP_ID") ?: "APP_ID",
HERE_SDK_APP_TOKEN : System.getenv("HERE_SDK_APP_TOKEN") ?: "APP_TOKEN",
HERE_SDK_LICENSE_KEY: System.getenv("HERE_SDK_LICENSE_KEY") ?: "APP_LICENSE",
]