概要

ブラックフライデーに乗じて購入した Google Pixel 3a XL への環境移行のときに調べたことのメモ.

普通に移行したいなら,Google がデータ移行手順を用意してくれている.

しかし,移行元が Android 4.4.4 と古く,この手順には対応していなかった.

環境

  • PC: Ubuntu 20.04.1 LTS (Focal Fossa)
    • $ cat /etc/os-release で確認
  • 移行先スマホ:
    • Google Pixel 3a XL
    • Android 9.0.0 Release 38 (PD2A.190115.029)
  • 移行元スマホ:
    • Android 4.4.4

adb 導入

ケース1: 移行元端末が Android 5.0 以降の場合

adbapt でインストールしたものを用いる.

sudo apt install android-tools-adb

ケース2: 移行元端末が Android 4.X 系の場合

導入方法は要注意である.

Android 4.4.4 からの移行を行う場合,apt でインストールしてはいけない.何故なら,apt 経由でインストール可能なバージョンの adb は比較的新しいもの(少なくとも 1.0.32 以降)で,Android 4.4.4 からの adb backup をサポートしていないからである.

そこで,古い adb を落としてきて,手動で配置する必要がある.手順は次の通り.

adb バイナリの配置

  1. 以下からバイナリを落とし,適当な場所に配置する.
  2. 以下を実行する.
    $ sudo dpkg --add-architecture i386
    $ sudo apt update
    $ sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
    

デバイスの接続と認識

  1. Android 端末側で USB デバッグを有効にする.
  2. Android 端末側で USB 接続モードを「ファイル転送モード(MSC)」から「メディア転送モード(MTP)」に変更する.
  3. Android 端末を USB ケーブルで PC と接続する.
  4. $ lsusb で端末のベンダ ID を調べる.
  5. /etc/udev/rules.d/51-android.rules に,ベンダごとに次のような行を追記する.
    • SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
  6. $ chmod a+r /etc/udev/rules.d/51-android.rules
  7. udev 設定をリロードし, adb を再起動する.
    $ sudo udevadm control --reload-rules
    $ adb kill-server
    $ adb start-server
    
  8. 端末の USB ケーブルを一旦抜いて接続し直す.
  9. 端末画面に USB デバッグを許可するかどうかのダイアログが出るので,許可する.
  10. $ adb devices
    • ここで,接続したい端末の表示が device になっていることを確認する.unauthorized になる場合,どこかで手順を誤っている.特に USB 接続モードの設定に注意.

アプリケーションデータのバックアップと復元

  1. バックアップ対象のアプリケーションのパッケージ名を調べておく.
    • Google Play でアプリケーションのページを開くと,URL 内に「id=com.QdanApp.Keikenchi」のような形で含まれている.
  2. 移行元端末を PC に接続し,adb から接続可能な状態にする.
  3. $ adb backup -f "<バックアップ先ファイル名>" -apk <パッケージ名>
    • たとえば,$ adb backup -f "com.QdanApp.Keikenchi.ab" -apk com.QdanApp.Keikenchi のようにする.バックアップ先ファイルの拡張子は .ab にするのが普通.
    • このとき,-f の引数に渡すファイル名はダブルクォートで囲わないと,バックアップファイル名が強制的に backup.ab になってしまう
    • 端末画面に確認の表示が出るため,操作を行う.
  4. 移行元端末の接続を解除し,移行先端末を接続し直す.
  5. $ adb restore "<バックアップ先ファイル名>"
    • たとえば,$ adb restore "com.QdanApp.Keikenchi.ab" のようにする.
    • 端末画面に確認の表示が出るため,操作を行う.

以上