使用 SQLCipher 加密后无法压缩 Android SQLite 数据库

Unable to Zip Android SQLite Database After Encrypting With SQLCipher

我随我的应用程序一起发布了一个只读数据库,并将其包含在 Assets/Database 目录中。所有数据都预先填充。

SQLCipher 集成并加密数据库后,我注意到 APK 大小从 25MB 激增至 150MB。原因是 SQLite 数据库文件不再被压缩。

Android Studio 通常会压缩资源,但在数据库文件加密后,压缩文件似乎没有效果。我尝试使用常规 Zip 和 7Zip 在外部进行测试,结果没有区别,压缩文件与原始文件大小相同。

未加密的数据库大约有 130MB,压缩后只需要 18MB,因为其中大部分是文本和字符串,压缩得很好。压缩加密的数据库文件不会影响大小。

通过服务器填充不是一个可行的选择,因为由于记录数量的缘故,这将花费很长时间。从服务器下载完整的加密数据库文件是下一个选项,但对于 140MB 的文件来说仍然太慢了。

需要找到一种方法来将加密数据库与应用程序一起发送,同时仍将应用程序大小保持在合理的 20-30MB

有什么想法吗?

谢谢。

压缩需要在数据中找到模式。 加密会删除所有此类模式。

您需要先压缩再加密。 这对于 SQLCipher 是不可能的;您必须发送压缩和加密的 .sql 文件,然后在新的加密数据库上执行它。