2016-09-28 10 views
1

パッケージマネージャーAPIを使用してAndroidアプリを更新すると、新しいバージョンのアプリからのデータファイルがアプリに含まれているにもかかわらず、古いバージョンのアプリがまだインストールされていて電話?Android Realmの移行に関する問題:新しいバージョンのデータファイルで古いバージョンのアプリが使えなくなることはありますか?

Realm 1.0.0データベースを使用して開発された顧客から返されたハンドセットでAndroidアプリを診断しています。何らかの理由でアプリが新しいバージョンのソフトウェアにアップデートできなかったようです。新しいバージョンのアプリにはスキーマv4があります。古いバージョンのアプリケーションにはスキーマv3がありました。アップグレードを配布するためにPlayストアは使用しません。

:アプリは、それが次のエラーでクラッシュし始めると

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); 
startActivity(intent); 

:私たちは、その後、次の目的でパッケージマネージャを起動することによってインストールされたアプリのダウンロード自体のAPKファイルのアップグレード私たち自身のWebサーバーを持っています

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

[設定]> [アプリ]の中には、V3のスキーマを使用している古いバージョンがインストールされていることがわかります。しかし、アプリが内部ストレージからロードしている.realmファイルには、新しいバージョンのAppに属しているv4スキーマがあります。

アプリはLollipop 5.0.2を搭載したMoto E2携帯電話で動作します。

答えて

0

あなたのアプリをダウングレードしたユーザーのようですが、

レルムは、レルムファイルを自動的にダウングレードする機能をサポートしていません。ダウングレードを許可する場合は、スキーマバージョンを次のレベル(4 - > 5)に引き上げ、3 - > 4の逆数としてマイグレーションを指定する必要があります。

あなたのシナリオでは、ユーザーが以前のバージョンにダウングレードできると仮定しているからです。

1)は、その例外をキャッチすることにより、ダウングレードが発生したことを検出して、ダウングレードすることはできません、ユーザーに警告を表示:その場合は

は、次の2つの選択肢があります。

2)ダウングレードが発生したことを検出して、レルムファイルを削除します。

+0

アプリのダウングレードはできません。 ADBによるサイドローディングを防止するUSB​​データポートへのアクセスを物理的にブロックするキオスクデバイス上で実行されます。アプリのアップグレードはPlayストアからは配布されませんが、独自のクラウドインフラストラクチャでは認証トークンなしではアクセスできず、ダウンロードしたAPKはアップグレード後にファイルシステムから削除されます。謎のビット! –

関連する問題