APK更新会从文件系统中删除数据库文件

时间:2018-10-01 13:27:00

标签: android database android-install-apk

我们的问题:

我们在PlayStore中确实有一个基于cordova的android应用,它使用sqlite插件将数据存储在数据库中。过去我们已经成功将此应用程序的版本从1.0.0更新到1.1.0,没有问题。 现在,我们尝试将应用程序更新为较新的版本1.1.1,其中仅包含一些小错误修正。但是,当我们从PlayStore安装该版本的更新时,我们的数据库将被删除,而先前版本中的所有数据都将丢失。

在使用adb工具进行了一些研究之后,我们发现数据库文件位于 在应用程序更新时,“ file:///data/user/0/my.app.id/databases/app.db”(my.app.id仅为该帖子的虚拟占位符)被删除。这意味着数据库文件已经被删除,甚至在第一次启动之前也已被删除。

仅当从PlayStore更新此版本1.1.0时,才会出现此行为。所有其他版本(例如从1.0.0直接升级到1.1.1)都可以正确更新,而不会丢失数据/数据库。

我们尝试过的事情:

  • 从我们的GIT存储库中恢复了1.1.0版本,然后以1.1.1 APK更新=>没有数据丢失,一切都按预期运行
  • 创建了没有插件和内容的空cordova应用。从PlayStore升级到1.1.0并安装了此应用=>删除了DB文件
  • 创建了一个空的本机android APK并安装为1.1.0更新=>数据库文件被删除
  • 从PlayStore下载APK 1.1.0,将其打开,增加版本字符串,并使用相应的密钥库文件再次签名应用=>没有数据丢失,版本字符串显示为1.1.1
  • 从PlayStore下载了APK 1.1.0,将其打开并用1.1.1 APK内容替换了内容,对应用程序进行了签名,并在先前的1.1.0版本上进行了更新=>数据没有丢失,但几秒钟后应用程序崩溃了
  • 从PlayStore中下载APK 1.1.0。从PlayConsoel下载APK 1.0.0。打开APK文件1.0.0,仅将版本字符串扩展为1.1.1。对应用程序进行签名并安装到1.1.0之上=>数据库文件被删除
  • 将1.1.1版作为Beta上传到PlayStore,并通过1.1.0版进行安装=>删除数据库过滤器
  • 在网络和stackoverflow上搜索了类似的问题,但没有与我们的案例相符的结果

我们真的很困惑,不知道发生了什么,因为我们存储了一些具有相同逻辑/代码库的相似应用程序,并且所有应用程序都正确更新。因此,任何在哪里寻找的提示都将受到赞赏!

0 个答案:

没有答案