我随我的应用程序提供了一个只读数据库,将其包含在 Assets/Database 目录中。所有数据均已预先填充。
与SQLCipher
集成并加密数据库后,我注意到APK大小从25MB增加到150MB。原因是 SQLite 数据库文件不再被压缩。
Android Studio 通常会压缩资源,但在数据库文件加密后,压缩文件似乎没有效果。我尝试使用常规 Zip 和 7Zip 在外部进行测试,结果没有什么区别,压缩文件的大小与原始文件的大小相同。
未加密的数据库约为 130MB,压缩后仅需要 18MB,因为其中大部分是文本,字符串压缩得很好。压缩加密的数据库文件在大小上没有差异。
通过服务器填充不是一个可行的选择,因为由于记录数量的原因,它会花费很长时间。下一个选择是从服务器下载完全加密的数据库文件,但对于 140MB 的文件来说,速度仍然太慢。
需要找到一种方法来随应用程序传送加密数据库,同时仍将应用程序大小保持在合理的20-30MB。
有什么想法吗?
谢谢。
最佳答案
压缩需要找到数据中的模式。 加密消除了所有此类模式。
加密前需要先进行压缩。 这对于 SQLCipher 来说是不可能的;您必须发送压缩和加密的 .sql 文件,然后在新的加密数据库上执行它。
关于android - 使用 SQLCipher 加密后无法压缩 Android SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757644/