#はじめに
このページはAndroid MのAuto Backupに関する共有を目的とするページです
結構便利そうなので、積極的に使ったほうが良いかなーと思っています。
と同時に、自動的にAuto Backup機能がopt-inされてしまうので、ユーザに使ってほしくない場合は、manifestに一行追加しなければいけないようです。
#必須条件
- targetSdkVersionが23以上
#概要
Android MにはAuto Backupという機能が追加される。
簡単にいえば「開発コスト、ユーザの操作コストを極力かけずにアプリのユーザデータの自動バックアップを作成する」というもの。
#特徴
- OSがAndroid M以上のすべての端末で動作
- Google Driveに暗号化された状態でバックアップが作成される。アプリがバックアップのスケジュールを指定できない
- 作成されたアプリのバックアップはGoogle Driveの保存領域制限(quota)としてカウントされない
- バックアップは24時間ごとに行われる
- バックアップは充電中、WiFi接続、アイドル状態の3つの条件が満たされた時に行われる
- バックアップデータはユーザが新しく携帯を購入した時、アプリをアンインストール後再インストールした際に復元される
- データ復元の実行は、アプリのインストール時に行われる
- ユーザがバックアップをオプトアウトしたい場合は設定変更ができる
- アプリがバックアップをオプトアウトしたい場合は、明示的にオプトアウトするプロパティをmanifestに追加しなければいけない
- バックアップに必要なクラウドの費用などはすべて無料(通信料は必要)
- 1アプリ25MBまでバックアップを作成できる。25MBを超えるとバックアップは停止される
#バックアップしてはいけないもの
- デバイス固有のtoken、例えばregistration IDなど
- センシティブなユーザデータ
#Auto Backupのデバッグ方法
##Backupのログを有効にする
$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
##Backup Managerを初期化する
$ adb shell bmgr run
##Backupを実行する
$ adb shell bmgr fullbackup <PACKAGE>
#バックアップデータを復元する
$ adb shell bmgr restore <PACKAGE>
#トラブルシューティングをする
もしバックアップのテスト中何らかのエラーが起きてしまった場合下記の3つの方法でバックアップデータを削除することが可能
- 設定でバックアップをOFFにしてONにする
- 工場出荷状態まで戻す
- 下記コマンドを実行する
$ adb shell bmgr wipe <TRANSPORT> <PACKAGE>
はcom.google.android.gmsによって設定されている。transportのリストを表示するには
$ adb shell bmgr list transports
を実行する。
#例
##バックアップ機能のオプトアウト
<application
android:allowBackup="false"
...
/>
##バックアップしないものをブラックリスト指定
例では、device_info.db以外すべてをバックアップするように設定
<application
android:fullBackupContent="@xml/my_xml_file"
...
/>
<full-backup-content>
<exclude domain="database"
path="device_info.db" />
</full-backup-content>
##バックアップしないものをホワイトリスト指定
例では、somethin_to_backup.txt以外すべてをバックアップしないように設定
<application
android:fullBackupContent="@xml/my_xml_file"
...
/>
<full-backup-content>
<include domain="file"
path="somethin_to_backup.txt" />
</full-backup-content>
##ドメイン指定できるもの
sharedpref
| file
| database
| external
| root
#参考文献
http://developer.android.com/preview/backup/index.html
https://github.com/googlesamples/android-AutoBackupForApps