首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android库项目中的数据封装

Android库项目中的数据封装
EN

Stack Overflow用户
提问于 2017-03-02 14:02:57
回答 1查看 268关注 0票数 3

我想要创建一个SDK项目,该项目必须封装和存储一个包含库的应用程序无法访问它的数据。数据由图书馆通过HTTPS接收。

因此,首先,我研究了共享首选项不是选项,因为Android中的库没有自己的上下文,只能处理应用程序的上下文,共享prefs中的数据对父应用程序是可见的。

存储这些敏感数据以对使用lib的应用程序隐藏这些敏感数据的最佳选项是什么?我计划使用代码混淆方法和商业工具,使检索这些数据尽可能困难。所以也许我应该使用Android Keystore系统还是简单的加密就足够了?

编辑: Ok,安全存储数据的唯一方法似乎是加密数据的变体之一。但是还有另一个问题:它会阻止父应用程序访问RAM并从那里读取数据吗?假设设备没有根。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-02 14:31:50

您可以使用SQLite作为数据存储。它比依赖外部库更好(因为在您的例子中,您正在编写库)。让我们保持轻点。

每个DB实例都有自己的名称,应用程序按名称访问它。作为一种可能的解决方案,您可以对DB实例的名称进行编码,并在运行时中对其进行解码。这将隐藏您的访问点对开发人员。

实现SQLiteOpenHelper类:

代码语言:javascript
复制
    public class FeedReaderDbHelper extends SQLiteOpenHelper {
        public static final int DATABASE_VERSION = 1;
        public static String DATABASE_NAME = Utils.decode("Ylhsd1lYTnpkMjl5WkE9PQ==");
            public FeedReaderDbHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
        ...

其中,Utils.decode("Ylhsd1lYTnpkMjl5WkE9PQ==")是为获得正确的DB名称而运行的方法。混淆之后,您的代码将如下所示:

代码语言:javascript
复制
com.myrpoject.mypackage.g.h.a(com.myrpoject.mypackage.g.h.a("Ylhsd1lYTnpkMjl5WkE9PQ=="))

当然,Ylhsd1lYTnpkMjl5WkE9PQ==只是一个示例,您可以使用任何其他。

有关第二步的详细信息,请参见Check this answer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42557509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档