2016-09-28 45 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就會從文件系統中刪除。有點神祕! –

相關問題