在Android Studio中隐藏私人信息的首选方法是什么?

时间:2018-10-04 08:55:33

标签: java android google-maps environment-variables google-maps-android-api-2

我想在上传项目时隐藏API密钥之类的私人信息。所以我想知道是否有一种方法可以像在命令提示符中那样在某处设置环境变量。

例如,我想在google_maps_api.xml中隐藏我的API密钥

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">API_KEY_HERE</string>

如何在Android Studio中做到这一点?

2 个答案:

答案 0 :(得分:1)

根据最佳做法,建议将所有凭据保存在{'a': 1, 'b': 2, 'c': 3} 中,如下所示:

gradle.properties

此文件由Gradle自动导入,因此您可以像这样使用它:

KEYSTORE_PASSWORD=password123
KEY_PASSWORD=password789
GOOGLE_MAP_KEY=API_KEY_HERE

要在课程中使用signingConfigs { release { try { storeFile file("myapp.keystore") storePassword KEYSTORE_PASSWORD keyAlias "thekey" keyPassword KEY_PASSWORD } catch (ex) { throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.") } } } ,请参考以下内容:

gradle.properties

这将在android { ... defaultConfig { ... // defining the google map key buildConfigField "String", "GOOGLE_MAP_KEY", MAP_KEY } } 中生成,并将包含以下字段:

<package_name>.BuildConfig.java

您现在可以通过在任何课程中致电public class BuildConfig { // ... other generated fields ... public static final String GOOGLE_MAP_KEY = "API_KEY"; } 直接使用GOOGLE_MAP_KEY。

  

为了确保所有凭据的安全,请不要在Github等版本控制存储库中提交 gradle.properties

答案 1 :(得分:-1)

首先,您应该在src文件夹之外制作.env文件。

然后添加

REACT_APP_WEATHER_API_KEY=123456

用您的API_KEY替换123456

在提交之前,您应该排除此 .env 文件,因此找到.gitignore文件并添加.env。

您可以像这样使用这些env变量。

 const API_KEY = process.env.REACT_APP_WEATHER_API_KEY;

现在你可以自由了。

别忘了在.gitignore文件中添加.env。

有关更多信息,see this