使用local.properties文件避免API密钥被提交到代码库 - MindOrks

作者:API传播员 · 2026-01-06 · 阅读时间:5分钟
本文介绍如何在Android开发中使用local.properties文件安全管理API密钥,避免敏感信息被提交到公共代码库。通过示例展示在Gradle文件中加载和提取密钥,并存储到gradleResValues.xml或BuildConfig.java中,确保密钥安全性和本地化。

使用 local.properties 文件避免 API 密钥被提交到代码库

作为一名 Android 开发人员,我们可以通过创建和贡献开源项目,与全球数百万开发者共享代码。感谢 GitHub 等代码托管平台的支持!然而,当我们将代码作为公共存储库共享时,需要特别注意保护私有信息,例如 API 密钥和受限 URL。本文将介绍如何通过在根项目中使用 local.properties 文件来实现这一目标。


什么是 local.properties 文件?

每次在 Android Studio 中创建新项目时,都会自动生成一个名为 local.properties 的文件,文件内容如下:

## 此文件由 Android Studio 自动生成。
# 不要修改此文件,您的更改将被删除!
## 此文件不应检查到版本控制系统中,
# 因为它包含特定于本地配置的信息。
## SDK 的位置。这仅由 Gradle 使用。
sdk.dir=sdk目录路径

从注释可以看出,local.properties 文件由 Android Studio 自动生成,并且建议不要将其包含在版本控制系统中。

如果查看项目的 .gitignore 文件,通常会看到以下内容:

*.iml
.gradle
/local.properties
.idea/
.DS_Store
/build/

可以发现,local.properties 文件已被默认排除在版本控制系统之外。


为什么使用 local.properties 文件?

由于 local.properties 文件不会被提交到版本控制系统,因此可以利用它来存储本地用户特定的变量或私有信息,例如 API 密钥或受限的基本 URL。这种方法可以有效避免敏感信息被公开。

示例用例

以下是一个实际用例:在一个拼车应用程序中使用 Google Maps API。为了使用 Google Maps,开发者需要一个 API 密钥。我们可以通过 local.properties 文件来安全地管理这个密钥。


在 local.properties 文件中添加 API 密钥

首先,在 local.properties 文件中添加以下内容:

sdk.dir=sdk目录路径

# 已存在的参数
apiKey=您的MAPS_API密钥

在 Gradle 文件中使用 API 密钥

接下来,我们需要在应用级 Gradle 文件中提取并使用这个密钥。以下是实现步骤:

1. 加载 local.properties 文件

build.gradle 文件中加载 local.properties 文件:

def localProperties = new Properties()
localProperties.load(new FileInputStream(rootProject.file("local.properties")))

2. 提取 API 密钥

通过以下方式访问 API 密钥:

def apiKey = localProperties.getProperty("apiKey")

将 API 密钥添加到生成的文件中

在构建过程中,可以将 API 密钥存储到生成的文件中,例如 gradleResValues.xmlBuildConfig.java

在 gradleResValues.xml 中存储密钥

在应用级 build.gradle 文件中,使用 resValue 将密钥添加到构建类型中:

android {
    ...
    buildTypes {
        debug {
            resValue "string", "google_maps_key", localProperties['apiKey']
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

重建项目后,可以在 res/generated 文件夹中找到生成的 gradleResValues.xml 文件,其内容如下:




    您的MAPS_API密钥

在代码中,可以通过以下方式使用该值:

String apiKey = getResources().getString(R.string.google_maps_key);

在 BuildConfig.java 中存储密钥

如果希望将密钥存储在 BuildConfig.java 文件中,可以在 build.gradle 文件中使用 buildConfigField

android {
    ...
    buildTypes {
        debug {
            buildConfigField "String", "API_KEY", ""${localProperties['apiKey']}""
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

重建项目后,可以在 BuildConfig.java 文件中找到以下内容:

// 编译类型字段:debug
public static final String API_KEY = "您的MAPS_API密钥";

在代码中,可以通过以下方式访问密钥:

String apiKey = BuildConfig.API_KEY;

总结

通过使用 local.properties 文件,我们可以安全地管理本地用户特定的参数,例如 API 密钥或受限 URL。这种方法不仅可以避免在代码中硬编码敏感信息,还能确保这些信息不会被提交到公共代码库中。

希望本文能帮助您更好地理解如何在 Android 项目中使用 local.properties 文件来保护敏感信息。继续学习,继续分享!

原文链接: https://blog.mindorks.com/using-local-properties-file-to-avoid-api-keys-check-in-into-version-control-system