Android Realm迁移问题:旧版本的应用程序是否会遇到较新版本的数据文件?

时间:2016-09-28 10:47:48

标签: android realm realm-migration

当使用软件包管理器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 vs V3。

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

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

1 个答案:

答案 0 :(得分:0)

听起来有些用户最有可能降级您的应用?

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

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

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

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

2)检测到降级已发生并删除Realm文件。