2016-09-28 80 views
1

当使用包管理器API更新Android应用程序时,它有可能进入应用程序从较新版本的应用程序获取数据文件的状态,但应用程序的旧版本仍然安装并正在运行电话?Android Realm迁移问题:旧版本的应用程序是否会卡住更新版本的数据文件?

我正在诊断从使用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); 

当应用程序启动时,它与下面的错误崩溃:

Realm on disc is newer then the one specified. V4 vs V3.

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

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

回答

0

这听起来像一些用户最有可能降级你的应用程序?

Realm不支持自动降级Realm文件。如果您希望降级,您需要将架构版本升级到更高级别:4 - > 5,并指定迁移为3 - > 4的倒数。

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

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

1)检测是否有降级发生通过捕获该异常,并显示一个警告,他们不能降级用户。

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

+0

应用程序的降级应该是不可能的。它运行在一个自助式设备上,它实际上阻止了对USB数据端口的访问,从而防止ADB侧面加载。应用程序升级不是通过Play商店分发,而是通过我们自己的云基础架构分发的,没有身份验证令牌就无法访问,并且一旦升级成功,下载的APK就会从文件系统中删除。有点神秘! –

相关问题