Android - 从github中排除api密钥,在代码中存储api密钥的位置?

时间:2015-07-31 10:07:41

标签: android android-gradle

我想知道存储api密钥的最佳方法是在android studio中。我想使用gitignore从github中排除这个文件。

我见过有人在HOME目录中使用gradle.properties,但是api特定于我的应用程序。

我还注意到新的android工作室项目中有一个gradle.properties,但是这可能包含我可能不想排除的其他内容。

任何人都知道最好的方法吗?

因此该文件将在本地可用,我的项目将在运行时读取它,但我会"也许" gitignore这个文件所以我不会提交它所以我不会暴露我的api密钥。

3 个答案:

答案 0 :(得分:3)

  

我见过有人在HOME目录中使用gradle.properties,但是api特定于我的应用程序。

我认为API不是特定于您的应用的问题。我们有时会遇到类似的情况,所以我们只为gradle.properties条目使用一些唯一的名称。像

这样的东西
(MY_APP_NAME)_(MY_API_NAME)_API_KEY

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

我可以考虑的一些替代方案:

  • 执行任务时显式将参数传递给gradle。因此,您可以将这些参数存储在Android Studio配置中。
  • 您可以使用.gradle将另一个apply from: 'path-to-my-local-script.gradle'文件应用于您的构建脚本(包含您的变量)。不要忘记将其添加到.gitignore

答案 1 :(得分:3)

您可以借助gradle和系统路径变量存储api密钥 添加新系统PATH变量 THE_MOVIE_DB_API_TOKEN =“XXXXX”

对于Windows操作系统:

  • 打开系统
  • 高级系统设置
  • 环境变量
  • 向用户变量添加新变量

将以下代码添加到 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)

答案 2 :(得分:1)

MacOS上的

将其放入~/.gradle/gradle.properties

THE_MOVIE_DATABASE_API_KEY=***********

Android Studio Gradle int build.gradle

    defaultConfig {
    applicationId "com.sample"
    minSdkVersion 16
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    buildConfigField "String" , "API_KEY" ,  "\"$THE_MOVIE_DATABASE_API_KEY\""
}

然后在Java代码中,您可以访问BuildConfig.API_KEY