[Android] ねこあつめのデータをHeliumを使わずに移動する

(追記 2018/01)
いよいよ2017年ですね。みなさんは年末は帰省しましたか。

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

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

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

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

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

もともと、「Android 4.4.2」から「Android 6.0.1」への移行を目的としていたのですが、時間が立つのは早いもので最新のAndroidバージョンはどんどん上がっていき、記事のバージョンと合わなくて困っている人が思いの外多いようなので、最新Android でも動作するように記事を更新しました。
ちなみにねこあつめに限った話ではなく、Android アプリ全てで使えるので知っておいて損はないと思います。
特に同じ会社からでた旅かえるも移行ツールが用意されていないような雰囲気なのでおそらく同様のやり方で移行できます。

免責:念のためお伝えしておきますが、自己責任でお願いします。

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

やりかたを順番に見ていきましょう。

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

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

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

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

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

最低限のファイルだけあれば十分なので、Android Studioのような全部入りのインストーラは不要で、platform-tools と呼ばれるファイルだけをダウンロードして利用できます。
最新であれば Android Studioのサイトから持ってきましょう。
この中の adb とよばれるコマンドを使うのですが、Androidのバージョンと相性があるため手持ちスマホのAndroidバージョンによって使い分けてください。
過去のバージョンは android-platform-tools-zipsにまとめたので探すのが面倒な方は使ってください。

ちなみに platform toolsのバージョンと adb のバージョンは 次のような関係になっています。(adbのバージョンって飛び飛びなんですかね?)

  • r16〜r20: adb1.0.31
  • r21〜r23: adb1.0.32
  • r24〜r25: adb1.0.36
  • latest : adb1.0.39 (at 2018/1/13)

と、そんなこと言われてもどのバージョンを使うかわからないですよね。
adbとAndroidの対応関係が公式に発表されていないので独自にまとめてみました。わからないところは空白、あんまり自信がないところは?にしてます。
コメントをくれた方々、ありがとうございました。

android/adb 1.0.31 1.0.32 1.0.36 1.0.39
4 o x x x
5 o o o?
6 o o o?
7.0 o? o? o o
7.1以上? x? o o
8 x o

つまりAndroid4から8への移行とかになると2つのバージョンを使い分ける必要があります。
検証はしていないので、間違っていたらコメントなどをください。ちょっと気づくの遅いかもしれませんけど。

Androidのバージョンもわからない、という方はとりあえず最新を試してみると良いでしょう。

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

パスを通す

このままだと「C:\util\android_sdk\platform-tools」に移動しないとコマンドが使えません。不便ですね。
どこからでもコマンド使えるようにするために上の「パス」を環境変数に登録します。これを「パスを通す」といいます。Windowsでの手順は以下。わかる方は飛ばしてください。 (マカーやLinuxユーザの方はわかりますよね)

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

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

path0

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

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

変数値(V): の右のテキストボックスの末尾に「;」(セミコロン)を挟んで先程のパス「C:\util\android_sdk\platform-tools」を記述する。
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」となります。その場合はデバッグ設定を再度有効にしてください。

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

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

ではバックアップをします。「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」とすればインストールされているアプリ一覧がわかるので調べた後に同じようにバックアップできます。
ちなみに 旅かえる は 「jp.co.hit_point.tabikaeru」です。
あなたが違うアプリをバックアップしたい場合、Playストアのアドレスバーに書かれたidパラメータと同じ識別子を指定すればOKです。

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つとかだらしねぇな。

脱線ですがAndroid4から6に移行するときに使った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バイト!やったか..!?
とおもったらやっぱりできてなかった( ^ω^)・・・

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