如何用flutter处理高空间sqlite数据库

问题描述 投票:0回答:1

我从非政府组织获得了sqlite数据库,其中有两本神圣的祈祷书。数据库大小为150mb,他们希望将整个数据库存储在应用程序中。他们希望用户第一次不想面对任何加载和下载弹出窗口。一切都将从应用程序端本身准备就绪,只需从游戏商店下载应用程序并使用它读取数据,而无需下载和使用互联网。

所以有人建议我在MacBook的帮助下做这件事可以做到这一点,请阅读他的消息👇🏻

我使用 LZMA2 压缩方法,将整个数据库的大小减少到 39mb,然后将该压缩文件移动到 flutter 应用程序的 asset 文件夹,然后使用 flutter 存档包解压缩,然后使用 SQLite 从未压缩文件安装该数据库。无论你有什么文件,现在尝试使用 flutter archiver 解压缩它

现在问题是这样的......

  1. 用户可以从他的存储中删除数据库吗?
  2. sqlite 数据库将在应用程序内部提取自身并增加应用程序大小,而不向用户显示数据库?
  3. 如果我将导入用户手机存储,那么手机清理器也会删除此数据库?
  4. 解压后我可以使用它作为运行时吗

请帮助我,我是初学者,我正在为崇高的事业工作,没有任何报酬

我想在我的应用程序中使用这个数据库,而不把我的应用程序大小增加得太高,我想把它做到90mb。请指导我我用flutter Achiever包尝试了什么,但我失败了,请帮我解决代码。

android database flutter sqlite size
1个回答
0
投票

根据您的问题详细信息,您已经找到了解决方案。我回答这个问题是为了让您了解应用程序运行时的概念。

在我向您提供逐步程序之前,这里是您问题的答案

1. user can delete db from his storage ?

答案是肯定的,用户可以使用一些技巧来删除它,例如清除应用程序数据,因为用户拥有手机,因此他/她有权对层级设备执行任何操作。

2. sqlite database will extract itself inside application and increase app size without showing db to user?

是的,你也可以实现这一点,但你需要为此编写代码,数据库不会自行处理

3. if i will import in user phone storage then cleaner of mobile phone will delete this db as well ?

这取决于您存储数据库文件的位置,您应该将文件放在

Path Provider
包中的 getApplicationDocumentsDirectory() 位置,保存在该位置的所有数据只有在不使用 root 权限的情况下才能从您的应用程序访问。

将数据库文件保存到公共目录(例如下载或文档文件夹)中是危险的。它还建议不要使用这种方法。

4. can i use it db as runtime after unzip

这个问题的答案是肯定的,您可以在运行时使用它,您只需要在尝试访问其数据之前检查文件是否存在

现在让我们进入正题,如何实现它

Step 1 -> 你需要先压缩文件,例如使用zip(大多数人使用的),无论你使用什么操作系统,都不需要使用mac将任何文件压缩为zip格式。

第 2 步 -> 将压缩数据库复制到您的项目资产文件夹

第 3 步 -> 现在在您的应用程序主功能或数据初始化阶段检查在初始化数据库之前是否已解压数据库文件。

第 4 步 -> 如果未找到数据库文件,则使用 archive 插件

从压缩文件中解压缩数据库

仅此而已。现在您可以运行并测试您的应用程序

© www.soinside.com 2019 - 2024. All rights reserved.