You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Native:密钥、接口地址等敏感信息应存于何处?

两种配置存储方式的选择建议

方案1:local.properties

这种方式依托项目根目录的local.properties文件存储配置,特性与适用场景如下:

  • 默认会被Android项目的.gitignore忽略,不会提交到代码仓库,适合存储本地环境专属的路径配置(比如SDK、NDK目录)。
  • 仅能在Gradle脚本中直接读取,若要在App代码中使用,需额外通过Gradle将值传递到App层(比如生成BuildConfig或资源文件)。

项目结构:

.
├── app
│   ├── build.gradle
│   └── src
├── build.gradle
├── gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── local.properties

Gradle读取示例:

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def sdkDir = properties.getProperty('sdk.dir')
def ndkDir = properties.getProperty('ndk.dir')

方案2:buildConfigField + 环境变量

这种方式通过Gradle的buildConfigField将环境变量的值注入自动生成的BuildConfig类中,特性与适用场景如下:

  • 配置的变量可直接在App代码中调用,无需额外处理,适合存储运行时需要使用的敏感信息(如API密钥、第三方服务Token)。
  • 依赖系统环境变量管理敏感值,避免将敏感信息写入代码文件,同时支持为不同构建变体(debug/release)配置不同值。

Gradle配置示例:

defaultConfig {
    ...
    buildConfigField "String", "API_KEY", "\"${System.env.API_KEY}\""
}

App代码调用示例:

println(BuildConfig.API_KEY)

选择建议

  • 若存储本地环境专属的路径(如SDK/NDK目录),优先选local.properties,这是它的原生设计用途。
  • 若存储需要在App代码中直接使用的敏感配置,选buildConfigField + 环境变量的方式,更适配App运行时的调用需求,也更符合多构建变体的配置逻辑。

内容的提问来源于stack exchange,提问作者Jakkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:05:22