Androidアプリケーションでこの非常に奇妙な動作を観察しました。おおよそのシナリオ:
- デバイスにインストールされているバージョンA
- アプリケーションは問題なく動作します
- デバイスにインストールされているバージョンB(B> A)
- アプリケーションは問題なく動作します
- 電池の消耗によりデバイスがシャットダウンする
- デバイスがオンになりました
- アプリケーションのバージョンAがデバイスで再度実行されます
追加情報:
- アプリケーションはGoogle Play経由では配布されませんが、USB接続経由でオンプレミスにインストールされます(注:アプリケーションは本番環境で実行されます。AndroidStudio経由ではインストールされません)。
- 売店
- Android 5.1(API 22)
私は2つの質問を持っていると思います:
- デバイスが古いバージョンのAPKをキャッシュしたのはなぜですか(どこにキャッシュしたのですか)?
- どのような状況で、アプリケーションをそのような以前のバージョンにロールバックできますか?
編集(詳細):
- APKがロールバックされた後、アプリケーションは一部の権限(おそらくすべて)を失ったように見えます。AndroidのAPIからSecurityExceptionがスローされるため、ロールバックが機能しなくなる前に機能していた機能。このバージョンのAndroidにはまだランタイム権限がありませんが、これは起こります!
- タブレットのファイルシステムを参照した後、確かにいくつかのアプリのAPKが同様のパス
/data/app/com.myapp-2/base.apk(/data/app/com.myapp-3/base.apk、など)に存在しているのがわかります。
私の現在の仮説は、バッテリーの消耗によりタブレットの状態が「リセット」され(たとえば、時計もリセットされる)、電源が再び入るとアプリのAPK間で混乱し、間違ったAPKがロードされるというものです。
しかし、それがなぜそれを行うのか、またはこの動作を防ぐ方法はわかりません。