【问题标题】:Git: track or untrack Android API keys?Git:跟踪或取消跟踪 Android API 密钥?
【发布时间】:2016-01-01 03:13:56
【问题描述】:

我正在使用适用于 Android 的 Google Maps API。我将我的代码从我的桌面推送到 Github,然后当我想在旅行时处理代码时,将其从 Github 下载到我的笔记本电脑上。

就 Google Maps API 而言,我需要将 API 密钥放在 android 清单中,如下所示:

<application>
  ...
  <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="YOUR_API_KEY"/>
</application>

现在,因为我有两个不同的调试证书(一个在笔记本电脑上,一个在台式机上),所以来自 google 的 API 密钥也会不同,因为来自调试证书的 SHA-1 指纹会有所不同。

如何在两台 PC 上保持这个唯一性?

我认为有必要在 git 上跟踪 android manifest,因为这是任何应用程序的一个非常重要的组件,但现在我如何避免每次推送时 API 密钥中的冲突?

【问题讨论】:

  • 我有同样的问题,所以我添加了两个设备 SHA-1 ,这是最简单的
  • 同意。那是另一种可能的解决方案。

标签: android git


【解决方案1】:

我认为 VonC 方法可能是最正确的方法,但我也想出了一个快速的解决方法。

您可以在 values.xml 文件夹下创建一个单独的自定义 xml 文件,随意调用它。我叫我的constants.xml

在 xml 中,您将添加您的 api 密钥:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="google_places_geo_api" type="string">APIKEY</item>
</resources>

我将它与 strings.xml 分开,这样我就不必在 git 上跟踪这个文件。我在 git 上跟踪 strings.xml。

在您的清单上:

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="@string/google_places_geo_api"/>

运行并从 constants.xml 文件中提取 api 密钥。

【讨论】:

    【解决方案2】:

    不跟踪 android manifest:在 git checkout 时自动生成。

    这称为smudge 脚​​本,是content filter driver 的一部分,使用.gitattributes declaration

    (图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)

    smudge”脚本(您必须编写)需要:

    • 检测其环境
    • 获取正确的密钥(可能来自另一个已跟踪的文件,并且会列出这些密钥)
    • 生成清单,使用带有占位符值的跟踪清单模板进行替换。

    【讨论】:

    • 谢谢 - 我可能需要做更多调查,因为这是我第一次听说涂抹脚本,但感谢您让我找到正确的方向。
    【解决方案3】:

    我知道 OP 有一个公认的答案和一个非常聪明的解决方法,但我想还有一种更简单的方法。

    当您在不同的 PC 中拥有不同的调试证书时,就会出现关键问题。如果您有一组开发人员在同一个应用程序上工作,同样的问题也是如此。我们在我工作的地方所做的只是在每台计算机上使用相同的调试密钥。从根本上解决问题。

    执行 Maps API 代码的第一个开发人员将其 debug.keystore 传递给我,另一位开发人员则在您的 PC 上替换此文件。

    对于运行 Android Studio 的 Mac 和 Linux,此文件位于 $HOME/.android/debug.keystore

    替换此文件意味着根本不必担心任何 API 密钥。您甚至可以将此文件签入 GIT 以确保它不会丢失。

    【讨论】:

    • 谢谢,我可以稍后再试试。这对我有很大帮助,我不必在 apis 上重新注册。
    • 我将内容过滤器驱动程序作为“本机 git”解决方案提供,但这个可能更合适。 +1
    【解决方案4】:

    只需添加具有相同包名的两个设备的 SHA-1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多