Android领域迁移问题:旧版本的应用程序会被新版本的数据文件卡住吗?

Android领域迁移问题:旧版本的应用程序会被新版本的数据文件卡住吗?,android,realm,realm-migration,Android,Realm,Realm Migration,当使用package manager API更新Android应用程序时,该应用程序是否可能进入一种状态,即该应用程序包含来自较新版本的应用程序的数据文件,而较旧版本的应用程序仍在手机上安装和运行 我正在诊断一个手机上的Android应用程序,该应用程序是由一位使用Realm1.0.0数据库开发的客户返回的。由于某种原因,应用程序未能更新到我们软件的更新版本。该应用程序的较新版本具有架构v4。较旧版本的应用程序具有架构v3。我们不使用Play Store分发升级。我们有自己的web服务器,应用程

当使用package manager API更新Android应用程序时,该应用程序是否可能进入一种状态,即该应用程序包含来自较新版本的应用程序的数据文件,而较旧版本的应用程序仍在手机上安装和运行

我正在诊断一个手机上的Android应用程序,该应用程序是由一位使用Realm1.0.0数据库开发的客户返回的。由于某种原因,应用程序未能更新到我们软件的更新版本。该应用程序的较新版本具有架构v4。较旧版本的应用程序具有架构v3。我们不使用Play Store分发升级。我们有自己的web服务器,应用程序在其中下载自身的APK文件升级,然后通过调用Package Manager进行安装,目的如下:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
应用程序启动时崩溃,出现以下错误:

光盘上的域比指定的域更新。V4对V3

如果我在Settings>Apps中查看,我可以看到安装的应用程序是使用我们架构的V3的旧版本。然而,应用程序从内部存储加载的.realm文件有一个v4架构,属于我们应用程序的较新版本


该应用程序运行在运行棒棒糖5.0.2的Moto E2手机上。

听起来很可能有用户降级了你的应用程序

Realm不支持自动降级Realm文件。如果您希望允许降级,您仍然需要将架构版本提升到下一个级别:4->5,并将那里的迁移指定为3->4的逆迁移

鉴于您的场景听起来不可能,因为我假设用户可以降级到任何以前的版本

在这种情况下,您有两种选择:

1) 通过捕获该异常来检测降级已发生,并向用户显示他们无法降级的警告


2) 检测是否发生降级,并删除域文件。

应用程序不可能降级。它运行在一个信息亭设备上,该设备物理上阻止对USB数据端口的访问,防止ADB侧面加载。应用程序升级不是通过Play Store分发的,而是通过我们自己的云基础设施分发的,如果没有身份验证令牌,云基础设施将无法访问,下载的APK将在成功升级后从文件系统中删除。有点神秘!