如何在 Android studio 中存储敏感数据
How can I store sensitive data in Android studio
我的应用程序有一些密码和 API 密钥需要使用。
对于我使用过的其他开发环境,我们会制作一个 .env 文件,将我们所有的敏感数据放在那里,将该 .env 文件保存到密码管理器,然后让开发人员知道将其下载启动一个项目,并让项目将.env 文件读入应用程序以供使用。 .env 文件永远不会提交到存储库,并设置为 git 忽略它。
在 Android 开发中使用 Java 执行此操作的最佳方法是什么?
你可以创建一个属性文件,放在你应用程序的文件夹下并将它添加到 .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
我的应用程序有一些密码和 API 密钥需要使用。
对于我使用过的其他开发环境,我们会制作一个 .env 文件,将我们所有的敏感数据放在那里,将该 .env 文件保存到密码管理器,然后让开发人员知道将其下载启动一个项目,并让项目将.env 文件读入应用程序以供使用。 .env 文件永远不会提交到存储库,并设置为 git 忽略它。
在 Android 开发中使用 Java 执行此操作的最佳方法是什么?
你可以创建一个属性文件,放在你应用程序的文件夹下并将它添加到 .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