2016-12-15 7 views
20

ステップを停止:cordovaで構築 1)オープンアンドロイドアプリケーション()Androidアプリ開始更新は

2)次に、私はインストール更新 https://github.com/Initsogar/cordova-webintent

3)のためcordova-webintentと呼ば私はインストールを押して、それはインストールを開始しますが、数秒後にアプリケーションが強制的に停止し、インストールされずに更新されたアプリケーションが終了します。

この問題はしばらく前に発生しましたが、同じバージョンのとcordovaのために、なぜこれが起こったのか理解できません。

4)アプリの強制停止後、アプリアイコンをタップしますが、「アプリがインストールされていません」というメッセージが表示されます。アプリは数秒後にバックグラウンドでインストールを続行します。私は再びアプリケーションアイコンをタップし、更新されたアプリケーションが開きます。

この問題を解決するには、インストール中にアプリを強制停止してください。

ログ:

E:\作業\ hello1> adbのlogcat ActivityManager:私はcom.example.hello1:D *:S

---------始まり[バックグラウンドサービスの優先度の調整] service.getFlagsための偽として設定callerFg():260

I/ActivityManager(715):スタートU0は、{= android.intent作用システム

I/ActivityManager(715)の.action.VIEW dat = file:///storage/emulated/0/filename1.apkディスプレイ0のuid 10657からtyp = application/vnd.android.package-archive cmp = com.android.packageinstaller/.PackageInstallerActivity}

---------先頭の先頭

I/ActivityManager(715):START u0 {dat = file:///storage/emulated/0/filename1.apk cmp = com.android。ディスプレイ0 にUID 10072からpackageinstaller/.InstallAppProgress(補足を有する)} I/ActivityManager(715):[AppLaunch】表示表示com.android.packageinstaller/.InstallAppProgress:+ 135ms

I/ActivityManager(715)。強制停止com.example.hello1 appid = 10657ユーザー= -1:アンインストールpkg

I/ActivityManager(715):com.example.hello1/u0a657(ADJ 1):19149キリング停止com.example.hello1を

W/ActivityManager(715)アプリスイッチは終了通知のpackageName = COM .example.hello1 I/ActivityManager(715):強制活性ActivityRecord {16a2ad7e U0 com.example.hello1/.MainActivity t2758}

I/ActivityManager(715)仕上げ:強制活性ActivityRecord {32eb6933 U0 com.android仕上げ.packageinstaller/.InstallAppProgress t2758}

W/ActivityManager(71 5):ProcessRecord {2590ad4d 19149:com.example.hello1/u0a657}、curProc for 19149のスプリアスデス:null

I/ActivityManager(715):強制停止します。example.hello1 APPID = 10657ユーザー= -1:アップデートPKG I/ActivityManager(715):強制停止com.example.hello1 APPID = 10657ユーザー= 0:インストールの意図を起動しているときのpkgは

+0

Androidバージョン、コードバージョンのようにこの情報を追加してください。デバイス固有ですか。また、万が一アプリケーションが更新中にバックグラウンドに移動することはありますか? – Gandhi

+0

- Android 5.0.1 - Cordova 6.3.1 - LenovoとSamsungのタブレットを確認しました。 - はい、アプリケーションがシャットダウンし、更新中にバックグラウンドに移動します – IuliiaBoiko

+0

アプリがバックグラウンドに移行するので、インテントイベントがウェブインテントプラグインの問題 - https://github.com/Initsogar/cordova-webintent/issues/27 https://github.com/Initsogar/cordova-webintent/pull/28リンクを確認して助けてくれたら教えてください – Gandhi

答えて

0

を削除AndroidのOSは強制的に実行中のアプリケーションをシャットダウンし、古いアプリケーションファイルを消去します(基本的にはアプリケーションの内部データフォルダ/サンドボックスを除いて削除されます)。その後、新しいアプリケーションファイルがコピーされますその後、あなたは、アプリが実行されている間、それは古いファイル

の除去の失敗につながる可能性がファイルロックを保持することができるよう、アプリケーションのシャットダウンは、インストールプロセスに必要なアプリに

を開始することができます

「強制停止」ダイアログは、失敗したプロセスの終了信号に対するアンドロイドの標準的な動作です。あなたはThread.UncaughtExceptionHandler

public void uncaughtException(Thread t, Throwable e){ 
    e.printStackTrace() 
    System.exit(0);// exit the app normally, with 0 (OK) signal - will bypass the "force close" UI 
} 

を使用することによって全体「力の停止」のメカニズムをオーバーライドすることができ、私はあなたの問題を解決するために、上記のトリックを使用することはお勧めしません - それは唯一の目的だあなたはそれがどのように動作するかを理解し、最終的にするためにそれを紹介するためのものですあなたは、シームレスな自己アプリのアップグレードを達成するために

にさらにトラブルシューティングに役立ちます、あなたが持っているでしょうに:

  1. 新しいAPKをダウンロードしてください(それは上の既存のアプリと同じ証明書によって署名されなければなりません電話番号)
  2. 遅延インストールのインテント/操作を設定するusing PendingIntentデバイスのパフォーマンスに応じてシャットダウンする時間とバッファの時間に余裕がある(たとえば、500ms-1secが妥当)
  3. 現在実行中のアプリケーションを終了するアプリSystem.exit(0)
関連する問題