2018-08-16

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

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

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

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

公式にねこあつめのデータを移行する方法ってのが存在しない んですよ(2018年1月時点も継続中)

ぼくも移行がめんどくさくてやめちゃったから運営さんはめんどくさがってないでサポートした方がいいと思います。(移行したのは母のデータ)

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

ねこあつめのデータ移行で調べると 【ねこあつめ】機種変更時のデータ移行!引き継ぎ方法の完全版!(Android) のように Helium というアプリを使って移行する方法が多く見つかりました。 Helium (Premium) - Google Play のアプリバックアップ、復元、およびアプリを同期!https://play.google.com/store/apps/details?id=com.koushikdutta.backup.license&hl=ja

でも、こういうのって基本最初の一回しか使いませんよね。無駄なアプリをインストールしたくない!

ということで今回Android端末に専用アプリを入れることなく、別端末へねこあつめのデータを移行したので記事にしました。

もともと Android 4.4.2 から Android 6.0.1 への移行を目的としていたのですが、 月日が経つのは早いもので最新のAndroidバージョンはどんどん上がっていき、記事のバージョンと合わなくて困っている人が思いの外多いようなので、 最新 Android でも動作するように記事を更新しました。

ちなみにねこあつめに限った話ではなく Android アプリ全てで使えるので知っておいて損はないと思います。

特に同じ会社からでた旅かえるも移行ツールが用意されていないような雰囲気なのでおそらく同様のやり方で移行できます。 旅かえる - Google Play のアプリ旅好きなかえるのために 少しだけおせっかいをやいてみませんか? 放置型シミュレーションアプリ「旅かえる」https://play.google.com/store/apps/details?id=jp.co.hit_point.tabikaeru&hl=ja

必要なものはPCとUSBケーブルです。PCはWindows10を使いますが、MacでもLinuxでも同じことはできるはずです。

結局PCは使うんですがPCをセットアップしておけば今後スマートフォンを変えても同じ手順で何度でも使えます。

これを口実に女の子を自分の家に連れ込めるかもしれませんよ。iPhone?そんなものは知らん。

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

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

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

スマートフォンをPCにUSB接続してゴニョゴニョするためにはAndroidの USBデバッグ という設定を有効にしなければいけません。

USBデバッグの有効化は「設定」→「開発者向けオプション」に移動すると見つかります。

しかし中には開発者向けオプションが表示されていない人もいると思います。当初この設定は非表示になっているため表示に変えてあげる必要があります。

そのために「設定」→「端末情報」に移動して「ビルド情報」と書かれた項目を7回タップしてください。

すると「開発者になりました」と言われ、「設定」に戻ると「開発者向けオプション」が表示されるようになります。

これを移動元・移動先、両方のAndroid端末で行ってください。

info
  • データ移行が終わったら無効にすることを推奨します。

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

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

ということでコマンドを使えるようにしましょう。

最低限のファイルだけあれば十分なので、 Android Studio のような全部入りのインストーラは不要で、 platform-tools と呼ばれるファイルだけをダウンロードして利用できます。

最新であれば Android Studioのサイト から持ってきましょう。

この中の adb とよばれるコマンドを使うのですが、Androidのバージョンと相性があるため手持ちスマホのAndroidバージョンによって使い分けてください。

過去のバージョンは以下にまとめてあるので探すのが面倒な方は使ってください。 https://github.com/righ/android-platform-tools-zips/blob/master/README.md

ちなみに 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/adb1.0.311.0.321.0.361.0.39
4oxxx
5ooo?
6ooo?
7.0o?o?oo
7.1以上x?oo
8xo

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

検証はしていないので、間違っていたらコメントなどをください。

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

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

info
  • 私は試していないのですが、複数のadbバージョンを使い分けたい場合、以下のように設置フォルダで分けるとよいでしょう。
    • C:\util\android_sdk\platform-tools-r20
    • C:\util\android_sdk\platform-tools-r25
  • この場合、以下の パスを通す (後述) の記述も少し変わってきます。

パスを通す

このままだと C:\util\android_sdk\platform-tools に移動しないとコマンドが使えません。不便ですね。

どこからでもコマンド使えるようにするために上の「パス」を環境変数に登録します。これを「パスを通す」といいます。

Windowsでの手順は以下。

わかる方は飛ばしてください。(マカーやLinuxユーザの方はわかりますよね)

  • 「コントロールパネル」→「システムとセキュリティ」→「システム」を開く

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

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

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

  • 変数値(V): の右のテキストボックスの末尾に ; (セミコロン)を挟んで先程のパス C:\util\android_sdk\platform-tools を記述する。 (すでに入っている値を消さないように注意してください)

  • 終わったら「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 のように読み替えて使いましょう。

      2.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
error
  • '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接続しているスマホを見てください。

とあるので、「データをバックアップ」をタップするとバックアップが完了します。

warning
  • パスワードはあってもいいですが入力した場合はリストアする時に必要になるので覚えておいてください。
  • 放置するとタイムアウトするのでその場合はやり直してください。

端末側で終了しましたと出たらひとまずバックアップは終了です。

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
info
  • 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接続しているスマホを見てください。

先ほどパスワードを入れた方は同じパスワードを入力。空にした場合は省略し、「データを復元する」をタップします。

終わるまで待って、ねこあつめを起動してみましょう。

できましたわー。よかった。金にぼ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バイト!やったか..!?

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

コメントを頂いてもすぐに返答できないため、 この記事に関して不明点があった場合はお手数ですがインターネットのみんなに聞いてみてください。

その他参考リンク

ウェブリブログ:サービスは終了しました。http://hikoukai.at.webry.info/201611/article_1.html

【Android】インストールされているパッケージの一覧を表示する【adb】 : かんうん やかく端末にインストールされているパッケージの一覧を確認したかったので調べた。メモメモ。 adb の shell を起動した状態でpm list packageを実行。別にshellを起動しなくても、adb shell pm list packageでも当然大丈夫。rootを取ってる必要はない。 (。・ω・)ノシhttp://blog.livedoor.jp/mitsu_aki/archives/19940874.html

adb 1.0.32 では、adb backup が正常動作しない。 (バックアップできない)症状 adb backup コマンドで、不正な (中身が空っぽの) バックアップファイル (backup.ab) しか出力されない。(正常動作しない) 厳密には、41バイトのファイルが出力される。 また、logcatを確認すると、不審なログが出力されている。 たとえば「 ...https://amdkkj.blogspot.com/2015/11/adb-1-0-32-adb-backup-doesnt-work.html

Android パズドラ用にバックアップバッチを書いてみた – treffen @ memohttps://pub.slateblue.tk/memo/day2935.html/comment-page-2

adb backupのオプションについて - Qiitaadbのヘルプメッセージによると、adb backupコマンドにはいくつかオプションがある。説明文を日本語にしてみました。adb backup [-f <file>] [-apk|-noapk] …https://qiita.com/niusounds/items/7b4959c3b1c1272d6c9a