【问题标题】:Changing Maps API Key based on development environment根据开发环境更改 Maps API Key
【发布时间】:2012-01-03 09:16:40
【问题描述】:

我在两个不同的环境中开发一个 Android 应用程序,并且每个 SDK 都有不同的 Maps API 密钥。我没有尝试将一个 debug.keystore 文件复制到另一个位置,但如果有一种方法可以根据开发环境选择性地替换文件中的密钥,我会更喜欢。密钥在 XML 文件中使用(尽管应该有一种以编程方式设置它的方法)。

【问题讨论】:

    标签: android google-maps development-environment api-key


    【解决方案1】:

    这是我们的工作:

    我们将 Maps 键保存在一个名为 assets/environment.properties 的文件中。默认情况下,它包含开发密钥。在应用程序启动期间的运行时,我们将该文件中的所有值放入一个哈希中,并根据该文件中的键手动构建我们的地图视图(您可以将 API 键传递给 MapView 构造函数)。

    每当我们发布新版本时,我们的构建系统都会将不同的模板文件复制到 environment.properties,该文件包含生产密钥。一旦通过使用版本控制系统(我们使用 Git)丢弃更改来构建应用程序,此步骤将被反转。都是自动的。

    到目前为止,这对我们来说效果很好。

    【讨论】:

    • 这似乎是最好的方法 - 你有任何文章或例子吗?设置这样的东西并让它与你现有的 IDE 一起工作似乎没有足够的文档记录,而且我对 Ant 没有经验。
    • 我实际上是在考虑写一篇关于我们的构建设置的博客文章,因为它已经变得非常复杂,而且我们可能也解决了其他人可能遇到的许多问题(处理各种各样的依赖项,例如作为上游项目、JAR 和 Android 库项目、用于分析的字节码注入、用于字节码优化的 ProGuard、自动将构建拆分为配置特定的 APK 以进行发布等。我们使用 Maven,尽管我打算在某个时候再次将所有内容移植到 Gradle(目前太不稳定)。
    • 话虽如此,我实际上并没有太多使用 Maven 的经验,而且我认为我们所做的一些事情并不是非常 Maven 式的。例如,我们使用 GMaven 来使用基于 Groovy 的构建助手来编写和复制文件,而不是处理更复杂的 maven-resources-plugin。
    【解决方案2】:

    您可以使用 Maps 密钥注册多个证书,因此您不再需要使用多个密钥。见https://stackoverflow.com/a/13881624/1433372

    "每行一个 SHA1 证书指纹和包名(用分号分隔)。示例:45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12: 17:F2:56:26:A0:E0;com.example 45:B6:E4:6F:36:AD:1A:98:94:B4:02:66:2B:12:17:F1:56:26 :A0:E0;com.example"

    【讨论】:

      【解决方案3】:

      您可以在 ant 中使用属性替换器,或者如果您在 maven 中使用相同的属性。

      【讨论】:

        【解决方案4】:

        如果您想以编程方式设置,可以将 API 密钥传递给 MapView constructor

        【讨论】:

        • 重点不是设置,而是根据开发环境设置。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-16
        • 2021-12-25
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多