【问题标题】:How can I store sensitive data in Android studio如何在 Android Studio 中存储敏感数据
【发布时间】:2021-11-14 16:32:29
【问题描述】:

我有一些我的应用需要使用的密码和 API 密钥。

对于我使用过的其他开发环境,我们会制作一个 .env 文件,将我们所有的敏感数据放入其中,将该 .env 文件保存到密码管理器中,然后让开发人员知道将其拉下来开始一个项目,并让项目将 .env 文件读入应用程序以供使用。 .env 文件永远不会提交到存储库,并设置为让 git 忽略它。

在使用 Java 进行 Android 开发时,最好的方法是什么?

【问题讨论】:

标签: java android android-studio environment-variables


【解决方案1】:

你可以创建一个属性文件,放在你应用的文件夹下,然后添加到.gitignore:

名为 passwords.properties 的属性文件的内容示例:

password1=123456
password2=qwerty

在 build.gradle 文件中的插件声明下,导入属性文件并将其加载到 Properties 对象中。

def passwordsPropertiesFile = rootProject.file("app/passwords.properties")
def passwordsProperties = new Properties()
passwordsProperties.load(new FileInputStream(passwordsPropertiesFile))

为了得到一个值,在你的 gradle 文件中使用它:

passwordsProperties['password1']

如果您需要应用程序代码中的值,您可以在默认配置下将值添加到 BuildConfig:

defaultConfig {
    applicationId "some.app.id"
    minSdkVersion 21
    targetSdkVersion 30
    ...

    buildConfigField "String", "PASSWORD1", passwordsProperties['password1']

}

或者通过在 buildTypes 部分下设置 BuildConfig 变量来为特定的构建类型添加它:

buildTypes {
    debug {
        buildConfigField "String", "PASSWORD1", passwordsProperties['debug_password1']
    }
    
    prod {
        buildConfigField "String", "PASSWORD1", passwordsProperties['prod_password1']
    }
}

要在应用程序代码中使用该值,请使用:

BuildConfig.PASSWORD1

【讨论】:

  • 这仅适用于单个用户项目,但不适用于小型企业内共享的项目。
  • .env 不一样吗?
  • 是的,这也不是我想说的正确方法。
  • 哦,好的。我认为对于 Android 项目来说没问题,这就是 OP 所要求的......
  • 这对我有用。只是为了纠正它进入 build.grade,而不是 gradle.build,我需要在 debug{} 或 release{} 下的 gradle 文件的 buildTypes 段中设置它,然后通过 BuildConfig.XXX 在应用程序中访问它
猜你喜欢
  • 2012-03-19
  • 2017-09-05
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 2022-12-15
  • 2017-11-15
相关资源
最近更新 更多