端末を「adb sideload」を使って手動で即座にアップデートする方法をNexus端末を例に解説します。
OTAでは通常、配信元が配信する地域やタイミング、端末数を設定しています。
特に、配信開始直後はバグ発生時の問題拡大を防ぐために受信できる端末数がかなり少なくなっており、ユーザーが「アップデートの確認」を行っても”お使いのシステムは最新の状態です”
などと表示されてしまい、任意のタイミングで更新できない場合がほとんどです。(例えばGoogleの場合、全ての端末が受信できるようになるまで数週間前後かかる)
この自分でダウンロードした更新ファイルは「adb sideload」を使うことで適用することが出来るため、即座にアップデートすることが可能です。
adb sideloadについて
端末は「OTA(Over The Air)」で更新される
Android端末では、一般に「OTA(Over The Air)」という仕組みを用いてメーカーなどが更新ファイルを配信、それを適用することで端末の更新が行われます。OTAでは通常、配信元が配信する地域やタイミング、端末数を設定しています。
特に、配信開始直後はバグ発生時の問題拡大を防ぐために受信できる端末数がかなり少なくなっており、ユーザーが「アップデートの確認」を行っても”お使いのシステムは最新の状態です”
などと表示されてしまい、任意のタイミングで更新できない場合がほとんどです。(例えばGoogleの場合、全ての端末が受信できるようになるまで数週間前後かかる)
adb sideloadによって即座にアップデート可能
前述の通り、OTAは、配信元の設定に依って更新ファイルが配信されるため、配信開始直後などではユーザーが任意のタイミングで更新することが出来ません。(数週間かかる場合も)
しかし、配信しているURLは決まっているため、そのURLが判明すれば自分でダウンロードすることが出来ます。(Nexus端末では殆どの場合すぐに判明)この自分でダウンロードした更新ファイルは「adb sideload」を使うことで適用することが出来るため、即座にアップデートすることが可能です。
adb sideloadでの手動アップデート
※予めPCでadbコマンドを使用できるようにしておく必要があります。詳しくは「【ADB】Java(JDK)とAndroid SDKを導入してADBコマンドを使えるようにする」を参照して下さい。
全体の流れは以下の通りです。
- 更新ファイルのダウンロード
- リカバリ(Recovery)の起動
- リカバリからadb sideloadでアップデート
また、最近のほとんどのOTAでは、更新ファイルに含まれている内容が直前のソフトウェアバージョンとの「差分」のみになっています。(配信容量削減のため)
そのため、適用しようとしている更新ファイルの”1つ前”のソフトウェアバージョンの状態である場合のみアップデートすることが可能です。
※root化済みである場合やリカバリを書き換えている場合、システム領域に変更を加えてある場合などではアップデート出来ないことがあります。
更新ファイルのダウンロード
アップデートしたい端末用のものをダウンロードします。
Nexus端末の場合、有志の方々により配信URLも公開されている上、様々なサイトでミラーされています。
リカバリの起動
起動方法はいくつかありますが、例としてadbコマンドによる起動方法を説明します。
※ブートローダーから起動する場合は、音量上下ボタンで「Recovery mode」を選択し、電源ボタンを押して下さい。(Nexus端末のみ)
※カスタムリカバリを使用している場合は、こちらの記事(TWRP)の「起動方法」の1か2を参考にして下さい。(3のリカバリを書き換える方法では、うまくアップデート出来ない場合があります)
adbコマンドによる起動
- 端末をPCと接続し、adbコマンドを使用できるようにしておく。
- PCでコマンドプロンプトを起動する。
- コマンドプロンプトに「adb reboot recovery」と入力し、「Enter」キーを押して実行する。
- 【Nexus端末のみ】画像の様な画面が表示されていることを確認し、「電源ボタン」を押しながら「音量+ボタン」を押した後、離す。
- リカバリが起動したことを確認する。(画像は、Nexus 7(2012))
リカバリからadb sideloadでアップデート
端末のリカバリを起動し、PCと接続しておいて下さい。
標準リカバリ
今回は、例としてNexus 7(2012)を更新(Android 5.0→5.0.2)しています。
- 「音量+/-ボタン」を押して「apply update from ADB」を選択し、「電源ボタン」を押す。
- 画面下部に「Now send the package you want to apply to the device with "adb sideload <filename>"...」と表示され、Sideload待機状態になったことを確認する。
- PC上の更新ファイルがある場所でコマンドプロンプトを起動する。
- コマンドプロンプトに「adb sideload ~~.zip」(~~.zipは更新ファイル名)と入力し、「Enter」キーを押す。
- ファイルの転送と更新が始まるので、しばらく待つ。
- 同時に、端末の画面に画像のように進行状況が表示されていることを確認する。
- コマンドプロンプト画面に「Total xfer: ~x」(~xは環境による)と表示されていることを確認する。
- 端末の画面下部に「Install from ADB complete.」と表示されていることを確認し、画面上部の「reboot system now」が選択されていることを確認して、「電源ボタン」を押す。
- 端末が自動的に再起動するので、更新されていることを確認する。
カスタムリカバリ(TWRP)
今回は、例としてTWRP 2.8.5.1を使用し、OnePlus Oneを更新(XNPH44S→05Q)しています。
- 左下の「Advanced」をタップする。
- 左下の「ADB Sideload」をタップする。
- 画面上にある2箇所にチェックを付け、「Swipe to Start Sideload」を右へスワイプする。
- 「Starting ADB sideload feature...」と表示され、Sideload待機状態になったことを確認する。
- PC上の更新ファイルがある場所でコマンドプロンプトを起動する。
- コマンドプロンプトに「adb sideload ~~.zip」(~~.zipは更新ファイル名)と入力し、「Enter」キーを押す。
- ファイルの転送と更新が始まるので、しばらく待つ。
- 同時に、端末の画面に「Installing '/sideload/package.zip'...」と表示されていることを確認する。
- コマンドプロンプト画面に「Total xfer: ~x」(~xは環境による)と表示されていることを確認する。
- 端末の画面に「ADB Sideload Complete Sccessful」と表示されていることを確認し、「Reboot System」をタップする。
- SuperSUをインストールするか聞かれるので、「Do Not Install」をタップする。
- 端末が自動的に再起動するので、更新されていることを確認する。