以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

Nexus 7(2012 Wi-Fi)、Android 5.1にsideloadでアップデートしたが、Android 5.1ヤバイ(いい意味で)

f:id:abyssluke:20150312175424p:plain:w240:leftAndroid 5.1がリリースされたが、Nexus 7(2012 Wi-Fi)にOTAが降ってくるのを待たずにadb sideloadでアップデートしてみた。Android 5.0.2(端末暗号化済の環境)でホーム画面に戻る時などに数秒かかっていたのが5.1にするとホームボタン押してすぐにホーム画面が表示されるなど快適になっていてヤバイ。ちなみにEqualizerというアプリがAndroid 5.1に対応していないのか音が極端に小さくなる不具合が発生し焦ったがEqualizerを切ったら直ったのは秘密。アップデート手順は続きを読むから。

sideloadやってみた

コマンドラインLinux(Ubuntu)での例。

0.Android SDKやUSBドライバのインストール or 更新を済ませておく。USBデバッグを有効化*1した端末とPCをUSBケーブルで接続しておく。
1.Nexus 7(2012 Wi-Fi)のAndroid 5.0.2→5.1へのOTAファイルをダウンロードする。→OTAファイル
2.端末をブートローダーモードで起動する。電源を切ってからボリュームダウン+電源で入れなおすか、以下のコマンドで起動させる。

$ adb reboot bootloader

3.ブートローダーが起動したらボリュームダウンを何回か押してRecovery modeを選択し電源ボタンを押す。
4.リカバリーモードになったら(三角の中に!があるアイコンが表示される)電源+ボリュームアップを押す。
5.ボリュームダウンでapply update from ADBを選択、電源ボタンを押す。
6.待機状態になるので、PC側で以下のコマンドを打って端末側にデータを流し込む。

$ adb sideload /path/to/9f163586073265c54d86679efd63513a4477cfd8.signed-nakasi-LMY47D-from-LRX22G.9f163586.zip

7.しばし待つ。進行具合(今何%)はPC側に表示される。
8.Install from ADB completeと表示されたらreboot system nowで再起動。

Linuxでの注意

Linuxでは、6のsideloadの段階でパーミッションが足りないというエラーメッセージが出ることがある。

$ adb sideload /path/to/9f163586073265c54d86679efd63513a4477cfd8.signed-nakasi-LMY47D-from-LRX22G.9f163586.zip 
loading: '9f163586073265c54d86679efd63513a4477cfd8.signed-nakasi-LMY47D-from-LRX22G.9f163586.zip'
error: insufficient permissions for device
$

この場合はadbのデーモンをroot権限で起動しなおす。

$ adb kill-server
$ sudo adb start-server

以下の内容で/etc/udev/rules.d/51-android.rulesを作成(要root権限)しておくと今後Nexusデバイス(GoogleのUSBベンダーID 18d1を指定している)に限りroot権限でadbデーモンを動かす必要はなくなる。

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

*1:設定の開発者オプションの中にあるが、開発者オプションが表示されていない場合はタブレット情報→ビルド番号を何回か連打すると表示されるようになる