android - 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 进行更新 => 没有数据丢失,一切正常
- 创建了没有插件和内容的空科尔多瓦应用程序。从 PlayStore 安装此应用程序作为更新超过 1.1.0 => 数据库文件被删除
- 创建空的原生 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 以上 => 数据库过滤器被删除
- 在 web 和 stackoverflow 上搜索了类似的问题,但没有与我们的案例匹配的结果
我们真的很困惑,不知道发生了什么,因为我们有一些类似的应用程序具有相同的逻辑/代码库并且都正确更新。因此,任何提示都将不胜感激!
解决方案
推荐阅读
- c++ - Mingw32 opencv3.4 编译报错
- mysql - Wordpress 自定义查询搜索慢
- php - 在所有浏览器打开的选项卡中更改页面标题
- c++ - 致命错误
- amazon-web-services - 如何共享 VPN 连接到私有子网中的实例?
- python - AttributeError: 'str' 对象在尝试遍历 href 并通过 Selenium 和 Python 单击它们时没有属性 'click'
- jena - 作为基于规则推理的新手,如何对 Apache Jena 的 Resoning 组件有基本的了解?
- php - 从行车记录仪视频中提取 gps 数据
- javascript - react-native 图标位于 View 下
- android - 在向上后退按钮上单击导航到活动中的特定片段