同じ Google アカウントにリンクされた複数のデバイス (スマートフォンやタブレットなど)に同じ有効なアプリがインストールされている場合、 AndroidBackupManager
はどのように動作するのか、常に疑問に思っています。私だけではないようですが、これに関する仕様は見つかりませんでした。BackupManager
このシナリオでのあなたの経験は何ですか? そのケースを説明する公式リソースはありますか?
同じ Google アカウントにリンクされた複数のデバイス (スマートフォンやタブレットなど)に同じ有効なアプリがインストールされている場合、 AndroidBackupManager
はどのように動作するのか、常に疑問に思っています。私だけではないようですが、これに関する仕様は見つかりませんでした。BackupManager
このシナリオでのあなたの経験は何ですか? そのケースを説明する公式リソースはありますか?
このメカニズムには、正しいことを自動的に行うはずなので、ユーザー向けのドキュメントやアプリ開発者向けのドキュメントはあまりありませんが、コードは利用可能です。以下のすべての情報は、ソース コードの調査とツールのドキュメント化されたオプションから得られたもの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
これにより、次のバックアップ操作が最初から開始されます。これは、バックアップ コードのデバッグ中に役立つ場合があります。
デバイスに別のセットへの書き込みを開始させることも、セット全体を一度にワイプすることもできません。