ねこあつめのデータをHeliumを使わずに移動する(Android4.XからAndroid6.X)

いよいよ2017年ですね。みなさんは年末は帰省しましたか。

私は帰省したついでに母ウェイにZenfone3 Laserをプレゼントしました。結構大きいけど薄くて使いやすかったですよ。

と、そんなことはどうでもいいんですが、諸々の設定などを移行してて困ったのがねこあつめのデータ。

公式にねこあつめのデータを移行する方法ってのが存在しないんですよ(2017年1月時点)
ぼくも移行がめんどくさくてやめちゃったから運営さんはめんどくさがってないでサポートした方がいいと思います。

ちなみに移行元の端末が古いからかBluetoothでの同期はできませんでしたよ。

ねこあつめのデータ移行で調べると【ねこあつめ】機種変更時のデータ移行!引き継ぎ方法の完全版!(Android) のようにHeliumというアプリを使って移行する方法が多く見つかりました。
でも、こういうのって基本最初の一回しか使いませんよね。無駄なアプリをインストールしたくない!
ということで今回端末に専用アプリを入れずに「Android 4.4.2」から「Android 6.0.1」へねこあつめのデータを移行したので記事にして共有したいと思います。

最初にいっておくと自己責任でやってください。

必要なものはPCとUSBケーブルです。PCはWindows10を使いますが、MacでもLinuxでも同じことはできるはずです。
結局PCは使うんですがPCをセットアップしておけば今後スマートフォンを変えても同じ手順で何度でも使えます。
これを口実に女の子を自分の家に連れ込めるかもしれませんよ。iPhone?そんなものは知らん。

順番に見ていきましょう。

AndroidのUSBデバッグを有効にする

スマートフォンをPCにUSB接続してゴニョゴニョするためにはAndroidのUSBデバッグという設定を有効にしなければいけません。
USBデバッグの有効化は「設定」→「開発者向けオプション」に移動すると見つかります。
しかし中には開発者向けオプションが表示されていない人もいると思います。当初この設定は非表示になっているため表示に変えてあげる必要があります。
そのために「設定」→「端末情報」に移動して「ビルド情報」と書かれた項目を7回タップしてください。すると「開発者になりました」と言われ、「設定」に戻ると「開発者向けオプション」が表示されるようになります。

これを移動元・移動先、両方のAndroid端末で行ってください。データ移行が終わったら無効にすることを推奨します。

PCでadbコマンドを使えるようにする

今回はadbというコマンドを使ってアプリデータのバックアップとリストアをすることでデータを移行していきます。
ということでコマンドを使えるようにしましょう。

最低限のファイルだけあれば十分なので、Android Studioのような全部入りのインストーラは不要です。
あと、Android7未満の場合、最新のadbコマンド(現時点での最新:1.0.36)がうまく機能しない恐れがあります。

というわけで一昔前のバージョンをダウンロードします。
ダウンロードしたZIPファイルをどこかに配置します。自分は「C:\util\android_sdk\platform-tools-r20」に置いたのでその前提で話していきます。

パスを通す

このままだと「C:\util\android_sdk\platform-tools-r20」に移動しないとコマンドが使えません。不便です。
どこからでもコマンド使えるようにするために上の「パス」を環境変数に登録します。これを「パスを通す」といいます。手順は以下。

「コントロールパネル」→「システムとセキュリティ」→「システム」を開く
起動方法がわからない人は左下の「何でも聞いてください」ってところ(Cortana)に「コントロールパネル」って打つと補完されて候補が出てくるのでそれをクリック。

左の「システムの詳細設定」をクリックして「システムのプロパティ」を開く

path0

下から2番めのボタン「環境変数(N)…」をクリックして環境変数の設定画面を開く
path1

ユーザー環境変数の「Path」を選択して「編集」をクリックして「ユーザ変数の編集」を開く。
path2

変数値(V): の右のテキストボックスの末尾に「;」(セミコロン)を挟んで先程のパス「C:\util\android_sdk\platform-tools-r20」を記述する。
path3
すでに入っている値を消さないように注意してください。終わったら「OK」をクリック。「環境変数」、「システムのプロパティ」ウィンドウも「OK」をクリック。

これでパスが通ったはずです。

adbコマンドを使ってバックアップする

まず最初に移行元(古い方)のスマホをUSBでPCに接続します。

続いてコマンドプロンプトを起動します。
起動方法がわからない人は左下の「何でも聞いてください」ってところ(Cortana)に「cmd」って打つと補完されて候補が出てくるのでそれをクリック。
黒い画面が出てきました。ここから操作をしていきます。

まずバックアップ用のフォルダを作ります。今回は「data」としましたが自由に変えてください。

C:\>mkdir data
C:\>cd data
C:\data>

続いて接続されているデバイスを確認します。「adb devices」と入力します。

C:\data>adb devices
List of devices attached
353351060139045 device

うまくいっている場合は上記のようになります(数値部分は可変)が
USBデバッグが有効になっていない場合は以下のように「Unauthorized」となります。その場合はデバッグ設定を再度有効にしてください。

「’adb’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と言われた場合はパスがうまく通っていないのでやり直してください。

C:\data>adb devices
List of devices attached
353351060139045 unauthorized

ではバックアップをします。「adb backup jp.co.hit_point.nekoatsume」のように入力してください。

C:\data>adb backup jp.co.hit_point.nekoatsume
Now unlock your device and confirm the backup operation...

まだ終わっていません。スマホ側で許可する必要があるのです。USB接続しているスマホを見てください。

接続しているデスクトップパソコンに対してすべてのデータのフルバックアップを行うようリクエストされています。許可しますか?
ご自分でバックアップをリクエストしていない場合は、この操作の続行を許可しないでください。

フルバックアップのデータを暗号化する場合は以下にパスワードを入力してください。

「バックアップしない」「データをバックアップ」

とあるので、「データをバックアップ」をタップするとバックアップが完了します。パスワードはなくてもいいですが入力した場合はリストアする時に必要になるので覚えておいてください。
放置するとタイムアウトするのでその場合はやり直してください。

端末側で終了しましたと出たらひとまずバックアップは終了です。backup.abというファイルが作られました。多分ファイル名を指定しないとデフォルトでこうなる。

C:\data>dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 3A44-6E75 です

 C:\data のディレクトリ

2017/01/01  18:08              .
2017/01/01  18:08              ..
2017/01/01  18:08        24,540,932 backup.ab

元旦の夕方に何をやってるんだ俺は。

ちなみに「jp.co.hit_point.nekoatsume」はアプリの識別子のようなものです。
もしねこあつめ以外のアプリをバックアップしたいのであれば、「adb shell pm list packages -f」とすればインストールされているアプリ一覧がわかるので同じようにバックアップできます。

C:\data>adb shell pm list packages -f | findstr nekoatsume
package:/data/app/jp.co.hit_point.nekoatsume-1.apk=jp.co.hit_point.nekoatsume

「findstr nekoatsume」はフィルタです。結果がたくさん出るので「nekoatsume」を含む行だけに絞り込むためのものです。

adbコマンドを使ってリストアする

バックアップしたデータを戻す(適用)することをリストアといいます。
先程のバックアップではデータだけをバックアップした(apkを含まない)ので、データだけをリストアすることになります。アプリは含まれていないので移行先のスマホにねこあつめを予めインストールしておいてください。

今度は移行先(新しい方)のスマホをUSBでPCに接続します。先程のスマホは抜いていいです。(安全に取り外してください)

つづいて「adb restore backup.ab」と入力し、リストアを行います。

C:\data>adb restore backup.ab
Now unlock your device and confirm the restore operation.

先ほどと同じように。スマホ側で許可する必要があります。USB接続しているスマホを見てください。

接続されているデスクトップパソコンからすべてのデータを完全に復元するようにリクエストされています。許可しますか?
ご自身で復元をリクエストしていない場合、操作の続行を許可しないでください。端末に現在あるデータがすべて置換されます。
復元するデータが暗号化されている場合以下にパスワードを入力してください:

「復元しない」「データを復元する」

先ほどパスワードを入れた方は同じパスワードを入力。空にした場合は省略し、「データを復元する」をタップします。
終わるまで待って、ねこあつめを起動してみましょう。

nekoatsume

できましたわー。よかった。金にぼ2つとかだらしねぇな。

脱線ですが今回使ったadbのバージョンは1.0.31です。最新というか1.0.32以上を使ってAndroid 4.Xのバックアップ取ろうとすると空のバックアップが作られます。
これで結構ハマりましたね。

C:\data>dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 3A44-6E75 です

 C:\data のディレクトリ

2017/01/01  16:32              .
2017/01/01  16:32              ..
2017/01/01  16:32                41 backup.ab
               2 個のファイル                  41 バイト

パスワード入力するとできるようなことが何処かに書いてあった気がしたので試したみたけど

C:\data>adb backup jp.co.hit_point.nekoatsume
Now unlock your device and confirm the backup operation...

C:\data>dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 3A44-6E75 です

 C:\data のディレクトリ

2017/01/01  17:07              .
2017/01/01  17:07              ..
2017/01/01  17:08               549 backup.ab
               1 個のファイル                 549 バイト

549バイト!やったか..!?
とおもったらやっぱりできてなかった( ^ω^)・・・

Android7以上だと最新使ったほうがいいのかな。よくわからないけどとりあえずめんどくさい。

その他参考リンク:
ねこあつめデータの引っ越し(引継ぎ)
【Android】インストールされているパッケージの一覧を表示する【adb】
adb 1.0.32 では、adb backup が正常動作しない。 (バックアップできない)
Android パズドラ用にバックアップバッチを書いてみた
adb backupのオプションについて