为什么在`flutter run --release`之后重新创建数据库?

时间:2019-09-10 15:46:11

标签: sqlite flutter

6月,我为父亲编写了一个CRUD应用程序,以尝试学习Flutter。我使用SQLite来存储数据。我将应用安装在运行flutter run --release的父亲的电话中。

几个月后,我升级了flutter和依赖项,并开始再次在该应用程序上工作以添加新功能。 (可能不相关的事实:同时我已经从Ubuntu迁移到Windows 10。

我再次在父亲的电话上运行flutter run --release以更新应用程序,但令我惊讶的是,该应用程序开始时没有任何数据(空数据库)。幸运的是,我已经备份了现有数据库。

现在,如果我运行相同的命令,现有数据库将按预期保留。

关于为什么通过从旧版本升级应用程序导致数据库丢失的任何想法?

注意:

  • 我没有触摸任何与数据库相关的代码(无需迁移,数据库版本相同)。
  • 数据库存储在sqflite.getDatabasesPath()/<appName>.sqlite中。

谢谢。

1 个答案:

答案 0 :(得分:1)

在另一台计算机上运行flutter run --release的事实实际上非常重要。在安装之前,每个应用程序都用密钥签名。 Android SDK为您创建一个服务密钥。在不同的计算机上,键是不同的。当您使用其他密钥安装应用程序时,原来的密钥将被完全删除。