当使用包管理器 API 更新 Android 应用程序时,它是否有可能进入应用程序具有来自较新版本应用程序的数据文件但仍安装并在手机上运行旧版本应用程序的状态?
我正在诊断使用 Realm 1.0.0 数据库开发的客户返回的手机上的 Android 应用程序。由于某种原因,该应用程序似乎无法更新到我们软件的较新版本。该应用程序的较新版本具有架构 v4。该应用程序的旧版本具有架构 v3。我们不使用 Play 商店分发升级。我们有自己的网络服务器,应用程序会在其中下载自身的 APK 文件升级,然后通过调用包管理器来安装这些升级文件,其意图如下:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
当应用程序启动时,它会崩溃并出现以下错误:
光盘上的领域比指定的领域更新。V4 与 V3。
如果我查看设置 > 应用程序,我可以看到安装的应用程序是使用我们架构的 V3 的旧版本。然而,应用程序从内部存储加载的 .realm 文件具有属于我们应用程序的较新版本的 v4 模式。
该应用程序在运行 Lollipop 5.0.2 的 Moto E2 手机上运行。