首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android,安全地存储几MB的应用程序数据(安全/无错误),并且考虑周到(不填充存储空间)?

Android,安全地存储几MB的应用程序数据(安全/无错误),并且考虑周到(不填充存储空间)?
EN

Stack Overflow用户
提问于 2011-04-11 17:07:43
回答 2查看 311关注 0票数 1

我的Android应用程序的图像密集度很高。出于对多种电话规格的考虑,我的应用程序将所有图像优化为更小、更易于处理的大小,以满足需要它们的设备。

目前,这些文件存储在:

代码语言:javascript
复制
/data/data/com.myapp.example/files

但是我觉得有两个重要的考虑因素,

首先,在初始“设置”之后,应用程序将占用大约10MB的额外空间。我如何才能使这对用户来说成为一个尽可能小的问题?我没有考虑过将它们输出到SD卡,因为它们是经过许可的材料,SD是完全不安全的。(尽管我完全知道来自根设备的数据目录也是如此)。这个问题的解决方案是什么?

我的第二个考虑是,在我开始尝试使用设备之前,我需要能够知道用户设备上是否有足够的空间,有没有什么方法可以在我开始使用之前找到?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-11 17:15:59

为什么不将文件保存在SDCard上,并使用某种强大的算法对它们进行加密?就像你说的,/data和SDCard一样安全...

要检查给定路径的可用空间,请使用StatFs类。

编辑11/04/2011:

您应该做一些测试,以检查解密数据是否会太慢。你可能会得到一个惊喜。还可以查看TEABlowfish算法,它们似乎是最快的“强”算法之一。或者简单地使用你自己的一种非常简单的算法来加密你的数据,这将防止图像被直接窃取(但不能抵抗更好的黑客)。

我认为手机上不会有任何安全区域来临时存储解密的文件,因为任何root用户都可以访问手机的任何地方(对任何人来说,在android上进行根操作都非常简单)

编辑2011/12/04:

您是否需要一次使用所有10MB内存?在内存中加载东西是不可能的吗?如果您在应用程序启动时(和/或在后台)加载数据,并在应用程序的生命周期中保持加载,那么您的应用程序是否会使用OutOfMemoryException崩溃?

最后一种可能性是使用某些本机接口在内存中解密/加载内容:内存分配在Java堆之外,这不会消耗应用程序内存配额,解码速度将大大加快,因为本机代码的运行速度将比等效的Java代码快得多。

票数 0
EN

Stack Overflow用户

发布于 2011-04-11 17:16:18

  1. “越小越好”--如果你需要10MB的数据,那么你就需要10MB的数据。除了压缩数据之外,没有太多方法可以使它变得更小。当然,如果并非所有这些数据都是必需的,您可以考虑将数据拆分到不同的模块中,然后以插件的形式在市场上提供这些模块,或者让用户在启动时选择需要哪些数据,然后从您自己的服务器上下载。
  2. SD本身是不安全的,但您可以对数据进行加密。当然,没有什么是万无一失的,但合理的加密算法将阻止随意复制数据。
  3. 无论您做什么,请记住在您的应用程序中启用“安装到SD”选项。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5619042

复制
相关文章

相似问题

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