Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在此以编程方式映射设置api键_Android_Api Key_Heremaps_Heremaps Android Sdk - Fatal编程技术网

Android在此以编程方式映射设置api键

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_

我在这里使用的是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_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",
]