在 android 中存储配置

Storing configs in android

我正在尝试找出放置配置类型数据的最佳位置。目前一切都硬编码在 java 例如 API 端点 URL,API 键等。 他们可以进入字符串资源吗?或静态 class?

旁注 - 像这样保存 API 密钥安全吗?

SharedPreferences 可能是存储应用配置的最佳选择。

基本上就是为这种数据存储而设计的。尽管在 root 设备 上具有超级用户权限的其他应用程序可以访问它,因此您可能想要加密敏感数据。

unrooted 设备上,它只能由应用程序访问,它在代码级别是安全的。

查看 developer's guide

如果您的配置永远不会改变,静态 class 也是一个选项。

有一些选项可以使用:

1.Static class(类似于 Config.java)或单例对象。例如:

public enum Config {
    INSTANCE;

    public static final String CLOUD_ID = "8888888888";
}

2.String 资源(strings.xml 或单独的字符串文件,如 api.xml)。例如:

 <string name="google_cloud_message_register_id" translatable="false">8888888888</string>

3.Integer 资源(xml 文件如 integers.xml)。例如:

<resources>
    <integer name="category_id">777</integer>
</resources>

4.SharedPreferences 存储。例如:

mSharedPreferences.edit().putString(AUTH_EMAIL_KEY, authEmail).commit(); // to save
mSharedPreferences.getString(AUTH_EMAIL_KEY, null); // to get

5.External storage(即文件)

6.SQLite 数据库

7.Gradle 构建脚本配置。例如:

// in build.gradle
buildTypes {
    release {
        buildConfigField "String", "API", "\"https://api.com/api/\""
    }
}

BuildConfig.API // access in Java code

对于 API 端点 URL,public API 键等。我更喜欢使用 Gradle 构建脚本配置。它非常灵活,不同的值可以用于各种构建类型。

加密的 SQLite table 可用于存储敏感的私人数据,但我认为保存私人数据的最佳方法是从受保护的外部服务器加载它们。