5

同じ Google アカウントにリンクされた複数のデバイス (スマートフォンやタブレットなど)に同じ有効なアプリがインストールされている場合、 AndroidBackupManagerはどのように動作するのか、常に疑問に思っています。私だけではないようですが、これに関する仕様は見つかりませんでした。BackupManager

このシナリオでのあなたの経験は何ですか? そのケースを説明する公式リソースはありますか?

4

1 に答える 1

8

このメカニズムには、正しいことを自動的に行うはずなので、ユーザー向けのドキュメントやアプリ開発者向けのドキュメントはあまりありませんが、コードは利用可能です。以下のすべての情報は、ソース コードの調査とツールのドキュメント化されたオプションから得られたものbmgrです。この回答は、私が最初にAndroid Stack Exchangeに書いたユーザーフレンドリーな回答から、より開発者向けに調整されています。

セットについて話しましょう、ベイビー

Android のバックアップ サービスには、セットと呼ばれる概念があります。つまり、1 つのデバイスから 1 つのトランスポートにバックアップされたすべてのデータのセットです。各セットは、デバイスの IMEI などの一意の文字列で識別されます。アプリ (またはインストール済みアプリのリスト) がバックアップされると、そのバックアップ データは、バックアップ元のデバイスに関連付けられたセットに入ります。すべてのセットは、引き続きユーザーの Google アカウントに固有です。デバイスをワイプして誰かに売った場合、その人はあなたの Google アカウントにログインできない限り、そのデバイスのセットにアクセスできなくなります。

デフォルトの動作

アプリがインストールされるか、デバイスにアプリのリストが復元されると、バックアップ システムは最初に、そのデバイスのセットでそのパッケージのバックアップ データを探します。何も見つからない場合 (バックアップ データのない完全に新しいデバイスであるか、そのパッケージがそのデバイスにインストールされていないため)、検索を他のセットに拡張します。(選択肢がある場合は、デバイス全体の復元に使用された最後のセットが使用されます。)

したがって、新しいデバイスをセットアップすると、古いデバイスのバックアップからアプリのリストが復元され、古いデバイスのバックアップから各アプリが復元されます。あるデバイスにアプリをインストールし、それを別のデバイスにインストールした場合、アプリは古いデバイスからのデータで復元されます。いずれの場合も、データは新しいデバイスのセットにバックアップされます。つまり、2 つのデバイスからのバックアップ データは、今後は別のものになります。

デバイスを出荷時設定にリセットした後、そのデバイスの最後のバックアップがある場合はそのデバイスから復元し、失敗した場合は他のデバイスのバックアップがある場合はそこから復元しますが、それ以降は独自のセットの作成を開始します。

bmgr: 基本的な使い方

このbmgrツールはデバッグとテストを目的としており、バックアップ/復元プロセスを少し制御できます。このツールを使用してadb shell、選択したパッケージのバックアップと復元をトリガーしたり、パッケージのバックアップ データを消去したり、デバイス全体を復元したりすることもできます。

android.permission.BACKUPルート以外のデバイス上のシェルで使用しないでください。何か興味深いことを行うには、システムレベルが必要です。

テストのために、パッケージにバックアップ データをすぐに更新させることができます。

bmgr backup com.shadowburst.showr
bmgr run

(またはパッケージ名が何であれ)。バックアップ データから 1 つのパッケージを復元するには、デフォルトで次のように選択します。

bmgr restore com.shadowburst.showr

これは、既にインストールされているパッケージでのみ機能します。データを復元するためにパッケージをインストールすることはありません。通常、デバイスは必要に応じてデータをバックアップおよび復元するため、これらのコマンドはどちらもテスト用です。

より詳細な制御

次に、バックアップ システムが実行しないことについて説明します。利用可能なバックアップ データのセットを確認するには、次の手順を実行します。

bmgr list sets

次のような出力が得られます。

  3ff7800e963f25c5 : manta
  3f0e5c90a412cca7 : manta
  3dd65924a70e14c8 : TF101
  3baa67e9ce029355 : m0

左側の 64 ビットの 16 進数はトークンと呼ばれ、セットを一意に識別します。右側のものは、セットを所有するデバイスの (比較的) わかりやすい名前です。たとえば、mantaは Nexus 10 のコードネームです。TF101はオリジナルの Asus Transformer を指します。トークンを指定することで、選択したセットからパッケージのデータを復元できます。

bmgr restore 3ff7800e963f25c5 com.shadowburst.showr

コマンドの末尾にさらにパッケージ名を追加して複数のパッケージを一度に復元するか、パッケージ名を指定せず (トークンのみ)、そのセット内のデータを含むすべてのパッケージを復元できます (つまり、システム全体を復元します)。戻す)。

最後に、現在のセットからパッケージのデータを消去できます。

bmgr wipe com.shadowburst.showr

これにより、次のバックアップ操作が最初から開始されます。これは、バックアップ コードのデバッグ中に役立つ場合があります。

デバイスに別のセットへの書き込みを開始させることも、セット全体を一度にワイプすることもできません。

于 2013-10-31T10:17:36.587 に答える