在android中存储配置

时间:2016-06-17 13:42:26

标签: android android-sqlite android-resources

我正在尝试找出放置配置类型数据的最佳位置。目前,一切都在java中硬编码 例如API端点URL,API密钥等。 他们可以进入弦乐资源吗?还是在静态课程中?

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

2 个答案:

答案 0 :(得分:2)

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

它基本上是为这种数据存储而设计的。虽然可以通过 rooted设备上的超级用户权限访问其他应用,但您可能需要加密敏感数据。

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

查看developer's guide

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

答案 1 :(得分:1)

有一些选项可供使用:

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

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 resources(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,公共API密钥等,我更喜欢使用Gradle构建脚本配置。它非常灵活,不同的值可以用于各种构建类型。

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