5

私はこれと同じ問題を抱えています-グーグル開発者グループで見つかりました。Chris Grebeldinger(原作者)による非常に詳細な説明を引用します。

"ドキュメント内:http: //developer.android.com/guide/topics/data/backup.html#Testing

次の方法でアプリケーションのバックアップ/復元をテストすることをお勧めします。

  1. アプリをインストールする
  2. バックアップ/復元が有効になっていることを確認してください
  3. 一部のデータを変更してdataChanged()を呼び出す
  4. bmgrにバックアップパスの実行を強制する
  5. アプリをアンインストールします
  6. アプリを再インストールして、データが復元されたかどうかを確認します

これをログに表示するステップ4までは、すべて順調に見えます。

V / BackupManagerService(306):removePackageParticipantsLocked:uid = 10078#1 V / BackupManagerService(306):com.example.appのバックアップされた知識を削除します

そして、ステップ5の場合:

V / BackupManagerService(306):restoreAtInstall pkg = com.example.app token = 21 V / BackupManagerService(306):復元セットなし-復元をスキップ

つまり、アプリをアンインストールすると、バックアップされたデータが破壊されるようです。つまり、公式のテストワークフローが正しく機能しない可能性がありますか?これをテストする最良の方法は何ですか?」

誰かがこのサンプルを正しく実行してテストすることができましたか?

4

2 に答える 2

2

googleandroid開発者グループの元の投稿に対する私の返信に親切に答えてくれたChrisGrebeldingerに改めて感謝します。

仕組み:

  • デバイスAにアプリをインストールします。
  • デバイスAでデータまたはプリファレンスを設定します。
  • デバイスAにバックアップを強制します(adb shell bmgr backup [app_name]、adb shell bmgr runを使用)。
  • 2番目のデバイスBを取得します。
  • デバイスBでファクトリリセットを実行します。
  • リセットしたら、アプリを再インストールします。
  • 復元操作は成功するはずです。

私を悩ませているのは、非常に詳細に見えるGoogle Androidのドキュメントに示されている「手順」が、必要かつ強制的な手順であると思われる手順を省略することにしたことです。

クリスが彼の返事で述べたように、私はこれが同じ問題を見つける他の人々に役立つことを願っています。

ありがとう。

編集:

さまざまなデバイスでさらにテストした後、バックアップ/復元プロセス全体がメーカーやデバイスによって異なる可能性があるようです。偶然の一致で、Googleのドキュメントアプローチを使用して、つまりネクサス7を使用してアンインストールおよびインストールすることにより、サンプルアプリをテストできました。したがって、私のアドバイスは、テスト中に同じ動作と一貫性を期待しないことです。

于 2012-11-30T16:01:13.697 に答える
2

テスト目的でエミュレーターを使用してみてください。API22を搭載したNexus5は、アプリをアンインストールしてインストールするだけで機能しました。

完全なプロセス:

  1. adbによるバックアップを有効にします。bmgr enable true
  2. ローカルトランスポートを設定します。 bmgr transport android/com.android.internal.backup.LocalTransport
  3. アプリを実行してバックアップの準備をする
  4. バックアップを実行します。bmgr backup <package> & bmgr run
  5. エミュレータからアプリをアンインストールします
  6. アプリを再インストールします-復元は自動的に行われます

ヒント:「バックアップ」アクティビティのlogcatを検索する

于 2016-11-30T22:15:10.063 に答える