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

いよいよ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

つまりAndroid 4 から 8 への移行とかになると2つのバージョンを使い分ける必要があります。

検証はしていないので、間違っていたらコメントなどをください。ちょっと気づくの遅いかもしれませんけど。

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

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

備考

私は試していないのですが、複数のadbバージョンを使い分けたい場合、以下のように設置フォルダで分けるとよいでしょう。

  • C:\util\android_sdk\platform-tools-r20
  • C:\util\android_sdk\platform-tools-r25

この場合、以下の パスを通す (後述) の記述も少し変わってきます。

パスを通す

このままだと 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を使い分ける場合

前述したように複数のバージョンを使い分け、複数の platform-tools-r?? のようなフォルダがある場合、 すべてパスに登録すれば良いと思ってしまうかもしれませんが、実はそれだけでは不十分です。

コマンドというのは 「登録したパスを前から順に探して、先に一致したものを使う」という動作をするため、 いずれか片方のバージョンの adb コマンドしか見えなくなってしまうというわけです。

ではどうすればよいでしょうか。解決方法はいくつかありますが、私だったら以下のいずれかで対応します。(1がオススメ)

  1. 一段上のパスの階層を登録する
  • 具体的には C:\util\android_sdk\platform-tools-r20 ではなく C:\util\android_sdk\ までしか登録しないということです。
  • こちらの方法を使う人は 後述する adb コマンドを platform-tools-r20\adb platform-tools-r25\adb のように読み替えて使いましょう。
  1. adb のコマンドファイル名を変える (例えば以下のようにします)
  • C:\util\android_sdk\platform-tools-r20\adb.exeC:\util\android_sdk\platform-tools-r20\adb-r20.exe
  • C:\util\android_sdk\platform-tools-r25\adb.exeC:\util\android_sdk\platform-tools-r25\adb-r25.exe
  • こちらの方法を使う人は 後述する adb コマンドを adb-r20 とか adb-r25 とかに読み替えて使いましょう。

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

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 以上を使って Android4.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バイト!やったか..!?

とおもったらやっぱりできてなかった( ^ω^)・・・

その他参考リンク