我目前有一个长字符串文本的大型.sqlite数据存储。它大约160MB,当我完成时它将增长到大约200MB。这是一个“只读”数据集。
我现在所做的只是将该文件放在我的包中并在运行时读取它。但是,这意味着该应用程序要求您下载160MB。不是最佳的。
一种解决方案是gzip该文件,将gzip压缩版本发布到捆绑包中,在首次运行时解压缩,然后将其放在Documents /文件夹中。这意味着你的下载量要少得多,但应用程序在设备上使用的总大小是(gzip'd的大小+ ungzip'd的大小),这显然也不是最佳的。
我想使用gzip解决方案,但在应用程序首次运行后,我想删除.gz版本。这可能吗?我该如何实现?另一个好的解决方案是什么?
答案 0 :(得分:8)
无法删除捆绑包中的文件。必须对应用程序进行签名,如果以任何方式修改了包,它将不会传递签名。
我能想到的唯一其他解决方案是设置网络服务,并让您的应用程序根据需要下载部分内容。这可能是也可能不是一个可行的解决方案,具体取决于您的应用实际执行的操作。
答案 1 :(得分:0)
正如保罗所说,捆绑中的任何内容都是签名的一部分。 我无法看到这种变化,因为它是签署应用程序的基本部分。
另一种经典的方法是尽可能地压缩捆绑中的数据,以便在构建工作存储时将其解压缩。