Android – 不包括github的API密钥,在代码中存储api密钥的位置?

我想知道什么是存储一个API密钥的最佳方式是在Android工作室。 我想要使​​用gitignore从github中排除这个文件。

我看到一些人在HOME目录中使用gradle.properties,但是API是特定于我的应用程序的。

我也注意到在新的android studio项目中有一个gradle.properties,但是这可以包含其他我可能不想排除的东西。

任何人都知道最好的方法来做到这一点?

所以文件将在本地可用,我的项目将在运行时读取它,但我会“可能”gitignore这个文件,所以我不会提交它,所以我不会公开我的API密钥。

Solutions Collecting From Web of "Android – 不包括github的API密钥,在代码中存储api密钥的位置?"

我看到一些人在HOME目录中使用gradle.properties,但是API是特定于我的应用程序的。

API看起来没有问题,特定于您的应用程序。 我们有时也会gradle.properties类似的情况,所以我们只是使用一些独特的名字作为gradle.properties条目。 就像是

 (MY_APP_NAME)_(MY_API_NAME)_API_KEY 

同样,我们以相同的方式将密码存储到内部Maven存储库,所以它们不会作为build.gradle文件的一部分推送到GitHub。 我可以说我们对这种方法很满意。

我可以考虑的一些select:

  • 在执行任务时显式传递参数给gradle。 因此,您可以将这些参数存储在Android Studioconfiguration中。
  • 您可以使用apply from: 'path-to-my-local-script.gradle'来将另一个.gradle文件应用于您的buildscript(将包含您的variables)。 只是不要忘记把它添加到.gitignore

您可以在gradle和系统pathvariables的帮助下存储api密钥添加新系统PATHvariablesTHE_MOVIE_DB_API_TOKEN =“XXXXX”

对于Windows操作系统:

  • 开放系统
  • 高级系统设置
  • 环境variables
  • 将新variables添加到用户variables

将下面的代码添加到build.gradle文件

 apply plugin: 'com.android.application' android { ... defaultConfig { ... } buildTypes { release { ... } buildTypes.each { it.buildConfigField 'String', 'THE_MOVIE_DB_API_TOKEN', "$System.env.THE_MOVIE_DB_API_TOKEN" } } } 

像这样在Java代码中使用API​​密钥

BuildConfig.THE_MOVIE_DB_API_TOKEN)