SQLiteAssetHelper 数据库文件大小

SQLiteAssetHelper database file size

我有一个应用程序,其中包含一个以 UTF-8 编码的预填充 sqlite 数据库。数据库文件大小为 170 MB。我正在使用 SQLiteAssetHelper 来管理数据库

考虑到大多数 Android 应用程序小于 50MB,这是相当大的。根据设置,我当前的应用程序大小为 238MB。

有什么方法可以让用户从商店下载可下载的应用程序时变小吗?我读过你可以压缩 sqlite 数据库,但我还没有尝试过。这会使应用程序的下载大小变小吗?还有其他更好的选择吗?

我关心的是应用程序的下载大小,而不是存储空间 space。我确实需要该应用程序离线工作,因此网络服务不是一个选项。

Is there any way to make the downloadable app size smaller when user downloads it from Store?

有一个较小的数据库。

Will that make the app's download size smaller?

由于 APK 已经是一个 ZIP 文件,不,因为压缩 ZIP 文件中的条目不会进一步减小其大小。

Are there any other better options?

您无法使用 SQLiteAssetHelper,并在您的应用程序的第一个 运行 下载数据库。或者,您无法使用 SQLiteAssetHelper 并考虑使用 APK 扩展文件。这些都不会改变要下载的字节数,但它们会减少整体磁盘 space 您的应用程序占用的空间。您可以使用命令行 unzip 之类的工具来查看 space 您的数据库文件在 APK 中占用了多少(我的一个测试应用程序的数据库是 89%压缩,因此占用 568 字节而不是未压缩的 5120 字节)。这个 space 是不可恢复的,因为您无法从 assets/ 中删除数据库。假设压缩率相似,您的 170MB 数据库将从 assets/ 中的副本占用额外的 ~17MB 磁盘空间。

您也可以在设备上根本没有 170MB 的数据库,并让您的应用程序与某些 Web 服务一起使用以访问数据库的托管副本。这当然不能离线使用。

我最终对我数据库中的主要查找表使用了文本文件。我将它们与较小的 sqlite 数据库一起添加到资产文件夹中。我只保留了我需要在 sqlite 数据库中做 inserts/adds 的小表。

而且我还能够轻松地加密文件中的数据(这在 sqlite 中不容易做到)

我必须创建索引来索引文件数据,并使用二分查找键或值查找。

这缩短了 apk 的大小,现在约为 30 MB。之前大约是 76MB。并且应用程序大小 > 200 MB。