【问题标题】:Android Here Maps set api keys programmaticallyAndroid Here Maps 以编程方式设置 api 键
【发布时间】:2020-06-09 09:26:16
【问题描述】:

我正在使用 Here maps Premium SDK 3.15,在文档中,它说要在 android manifest 文件中设置 id、token 和 license。我将 build.gradle 中的 id、token 和 license 设置为 manifest 占位符,并放入 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}"/>

我的项目遇到了静态代码分析,其中一项发现是“应用程序代码中存在硬编码的秘密令牌”。这意味着我将此处的地图凭据保留在 build.gradle 中,这不行。

我的问题是我应该将这些凭据保存在哪里,有没有办法设置这里以编程方式而不是 Android 映射 SDK。清单(以防万一,我不保留在项目中并从后端检索)

【问题讨论】:

标签: android api-key heremaps heremaps-android-sdk


【解决方案1】:

不,您不能以编程方式更改清单文件或资源,除非通过 gradle 注入。根据这里的地图:https://developer.here.com/documentation/android-premium/3.15/dev_guide/topics/credentials.html只有一种设置凭据的方法,但是您可以采取一些安全措施,请参阅https://stackoverflow.com/a/46475968/8461344

【讨论】:

    【解决方案2】:

    您可以使用清单占位符https://developer.android.com/studio/build/manifest-build-variables

    然后将您的密钥放在 env 或 local.properties 中,如下所示 (build.gradle)

    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",
    ]
    

    AndroidManifest.xml:

    <meta-data
        android:name="com.here.android.maps.appid"
        android:value="${HERE_SDK_APP_ID}" />
    <meta-data
        android:name="com.here.android.maps.apptoken"
        android:value="${HERE_SDK_APP_TOKEN}" />
    <meta-data
         android:name="com.here.android.maps.license.key"
         android:value="${HERE_SDK_LICENSE_KEY}" />
    

    【讨论】:

      【解决方案3】:

      我认为这里已经回答了Dynamic API KEY for Google Maps on Android

      很明显,谷歌地图不支持动态 API 密钥插入。

      对于任何其他动态 API 密钥,如果您不想在项目中硬编码,可以查看 Firebase RemoteConfig。 链接在这里, https://firebase.google.com/docs/remote-config/use-config-android

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-30
        • 2020-10-06
        • 2011-04-28
        • 2015-05-29
        • 2011-12-16
        • 2013-10-31
        相关资源
        最近更新 更多