backup restore関係の覚書メモ
自メモ)
自分も早く検証しないとな(汗
とりあえず対談をメモ
BackupAgentのリストアが動かないぃ
2013-05-01 21:59:54 via web
http://twitter.com/zaki50/status/329582331314716672:twitter:detail:right
@zaki50 sdkのサンプルにあるBackup Restoreてやつで試してもうまくいかーん。。のです
2013-05-01 22:13:28 via twicca to @zaki50
@zaki50 エミュでもでけると書いてあるぽよ
2013-05-01 22:16:22 via twicca to @zaki50
@zaki50 ありがとー。
2013-05-01 22:17:08 via twicca to @zaki50
@zaki50 あれ重複みてないんじゃない?マーケットにあがったアプリでしかキーつかわれないと思う。
2013-05-01 22:28:22 via twicca to @zaki50
http://twitter.com/zaki50/status/329588246680043521:twitter:detail:right
@zaki50 マーケットは早い者勝ちだから。
2013-05-01 22:29:43 via twicca to @zaki50
@zaki50 あれ、そういうこと?ローカルだと、ローカルの仕組みでやってるんじゃない?エミュはマーケット載ってないし。
2013-05-01 22:32:26 via twicca to @zaki50
http://twitter.com/zaki50/status/329589295855837184:twitter:detail:right
http://twitter.com/zaki50/status/329592008232558592:twitter:detail:right
http://twitter.com/zaki50/status/329592278307962882:twitter:detail:right
http://twitter.com/zaki50/status/329592699403505666:twitter:detail:right
@zaki50 adb shell bmgr run しないとバックアップ走らない。 dataChangedはキューに入れるだけ。
2013-05-01 22:50:31 via web to @zaki50
http://twitter.com/zaki50/status/329594177149083648:twitter:detail:right
http://twitter.com/zaki50/status/329594578351042560:twitter:detail:right
http://twitter.com/zaki50/status/329594585514921984:twitter:detail:right
@zaki50 なんだってー。。
2013-05-01 22:54:41 via web to @zaki50
http://twitter.com/zaki50/status/329595180250460160:twitter:detail:right
http://twitter.com/zaki50/status/329595292414517249:twitter:detail:right
@zaki50 バックアップは通る。/data/backup/com.android.internal.backup.LocalTransportのなかにもバックアップファイルらしきものもできている。
2013-05-01 22:58:58 via web to @zaki50
http://twitter.com/zaki50/status/329596579407355904:twitter:detail:right
模範例)
ネットの他の資料)
- GPソフト Wiki - AndroidのData Backup
- Android backup/restore: how to backup an internal database? - Stack Overflow
- Examples of SharedPreferencesBackupHelper | androidadb.com
- Y.A.M の 雑記帳: Android Android 2.2 データバックアップ
preferenceとsqliteのprivateデータをバックアップ/リストア
したいので///
な話もあるのでBackupAgent登録だけでもしておくと良さげな気もするかも
<UI上にBackup/Restoreボタン等無くても
UIでやる場合は
BackupManager
- dataChanged で変更登録 はできるけど強制実行はできないみたい。。。
- 復元:BackupManager#requestRestore() でOK
な話があるよう
# bmgr enable true # bmgr backup your.package.name # bmgr run
をアプリからやればいいのかな?
こっちはminSDKが8以下の時の設定対処。
ContentProviderと同じく、起動時に一度存在チェックでクラス舐めてしまう
=>RuntimeExceptionが出る
=>とりあえずアクセスに使う関数が宣言されてるラッパークラスがあればOK
って理屈みたい
追記)
Preferencesに関して>
SharedPreferencesBackupHelperをそのまま使えばいいイメージのよう
を見ると
こっちのほうがスマートそうだけど、yanzmさんの記事の記載でも確かに問題ないかな−
public class IrofBackupAgent extends BackupAgentHelper { static final String PREFS = "irof_instance"; static final String PREFS_BACKUP_KEY = "irof"; public void onCreate() { SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS); addHelper(PREFS_BACKUP_KEY, helper); } }
だけど、backup先としてGoogleが提供してるクラウドでは
- クラウドのストレージと転送サービスのセキュリティは保障しない
と記載済みなのでPrefrenceを別にしないと駄目かもしれない。。。<やっぱり後付が一番大変なんだよな−
そうすると
- Preference取得
- 文字列backup
で個別対応みたいな形になるかも。
其の場合Activityとかの参照が取れないと厳しいんでないかな?
SQlightに関して>
FileBackupHelper を拡張して DbBackupHelperを作るのが
いちばんいいみたいなイメージですね
SDCardに保存する場合はちょっと頭ひねらないと駄目とのこと
でもココで整理してて思ったけど
- 項目選択してバックアップ/復元
とかやる場合はどう拡張すればいいんだろうか?
- アプリ内から バックアップ/復元 は選択制
- 普通の時はフルバックアップ/フル復元
なイメージになってしまうのだろうか。。
異機種間で引き継がれるかどうか?の話メモ)
再インストールで再認証されるとトークン無駄に消費するしやはりBackupService対応しておくべきだな。
adb shell bmgr ほげほげ ってやってたら端末が再起動したw
Preferenceの保存先のお話)
@takke どこかでpreferenceの保存場所が異なる端末があるみたいなの見かけたんですが、そういうのも対応してます?
2013-11-16 00:25:36 via Janetter to @takke
@gari_jp あー噂には聞いたことがあります。エクスポートするときに getApplicationInfo().dataDir + "/shared_prefs/" + package + "_preferences.xml" ってしてるのでそれ以外だとアウトっすねぇ。
2013-11-16 00:27:43 via Tween to @gari_jp
@takke なるほど。僕も次出すアプリに入れようと思ってるんですけどちょっと気になってて後回しにしてました。まぁほとんどの端末が対応してるなら問題ないですね。
2013-11-16 00:35:17 via Janetter to @takke
@gari_jp どうなんですかねー、あまり情報がなくて調べきれてないのでもしなにかわかったら教えてくださいw
@takke 了解しましたw
@gari_jp @takke このお話でしょうか? URL
2013-11-16 08:31:27 via YoruFukurou to @gari_jp
内部APIに ContextWrapper#getSharedPrefsFile() というメソッドがあります。 RT @takke @gari_jp ... エクスポートするときに ... ってしてるのでそれ以外だとアウトっすねぇ。
@jiro_aqua ありがとうございます。明日調べてみます!
.@gari_jp Activityをリフレクションで掘るとメソッドが取れます。Jotaの設定バックアップはこいつを使ってます。
2013-11-16 00:59:35 via MetroTwit to @gari_jp
Androidの自前バックアップ機能作ってるけど、ファイルコピーするだけだからすげー簡単だな。リストアはプリファレンスだけ上書きができないみたいだからちょっとごにょごにょしないといけないようだ。
@gari_jp SharedPreferences.Editor の apply() だと遅延書き込みされる可能性があって、同期させるには commit() を使わなきゃいけないんですが、関係ないかなー。
2013-11-19 20:46:25 via Tween to @gari_jp
リストア機能も無事動くようになった。