我有一个应用程序,其中包含一个预先填充的sqlite数据库,以UTF-8编码。 DB文件大小为170 MB。我正在使用SQLiteAssetHelper来管理数据库
考虑到大多数Android应用程序都不到50MB,它非常大。根据设置,我当前的应用程序大小为238MB。
当用户从商店下载时,有没有办法让可下载的应用尺寸更小?我已经读过你可以压缩sqlite数据库,但我还没有尝试过。这会使应用程序的下载量变小吗?还有其他更好的选择吗?
我担心应用的下载大小,而不是存储空间。我确实需要该应用程序脱机工作,因此无法使用Web服务。
答案 0 :(得分:1)
当用户从Store下载时,有没有办法让可下载的应用程序大小更小?
拥有一个较小的数据库。
这会使应用的下载量变小吗?
由于APK已经是ZIP文件,不会,因为在ZIP文件中压缩条目不会进一步减小其大小。
还有其他更好的选择吗?
您无法使用SQLiteAssetHelper
,并在首次运行应用时下载数据库。或者,您无法使用SQLiteAssetHelper
并考虑使用APK扩展文件。这些都不会改变要下载的字节数,但它们会减少应用程序占用的整体磁盘空间。您可以使用命令行 unzip
等工具来查看数据库文件在APK中占用的空间(我的一个测试应用程序的数据库压缩率为89%,因此需要568个字节而不是未压缩的5120字节)。如果您无法从assets/
删除数据库,则此空间是不可恢复的。假设压缩率相似,那么您的170MB数据库将从assets/
中的副本中占用大约17MB的磁盘空间。
您可能根本没有设备上的170MB数据库,并让您的应用程序使用某些Web服务来访问数据库的托管副本。当然,这不会离线工作。
答案 1 :(得分:0)
我最终在我的数据库中使用主要查找表的文本文件。我将它们与较小的sqlite db一起添加到assets文件夹中。我只保留了我需要在sqlite db中插入/添加的小表。
我还能够轻松加密文件中的数据(这在sqlite中并不容易)
我必须创建索引来索引文件数据,并使用二进制搜索按键或值查找。
缩短了apk尺寸,现在大约30 MB。之前大约是76MB。并且应用程序大小> 200 MB。