周回遅れの日記

はてなダイアリーから移転

Nexus7(2012)をAndroid4.4から4.3に戻す

Android 4.4にアップデートしたNexus 7(2012)を、Android 4.3にダウンデート… いやそんな言葉はないか、ロールバック?ダウングレード?まあとにかく、4.4から4.3に戻してみました。
ちょっとだけ悪戦苦闘した体験談です。
半年間お世話になったNexus 7(2012)16GBモデルですが、OTAで4.4.2が降ってきました。

だがしかし、先日新しくNexus 7(2012)32Tモデルに買い換えましたの、この16GBモデルは不要になっちゃいました。
幸い、嫁ぎ先が見つかったので嫁に出すことにします。

すでにAndroid 4.4(KitKat)にアップデート済みなのですが、引取先からAndroid 4.3(Jelly Bean)にしてほしいという希望をいただきました。
Flashゲームがやりたいのかな、たぶん。
嫁ぎ先で嫌われて実家に戻るはめになっても、もうこの子には実家に居場所はありませんから、戻ってこられても困ります。
嫁ぎ先に嫌われないよう、希望どおりに4.3に戻してから引き取ってもらうことにしました。
ということで、4.4.2のアップデートが来ている状況ではありますが、逆にFactory Imageを使ってAndroid 4.3にダウンなんとか… ええ、とにかく4.3に戻してみます。

必要なもの

Windows PC、PCとねくななを接続するUSBケーブル(通信可能であること)、4.3のFactory Image、いくばくかのPCスキルと度胸、文鎮化しても泣かない覚悟。

Android SDK の準備

WindowsPCにインストールしてあるAndroid SDK を使います
私開発者じゃないですし、滅多に使わないAndroid SDKJDKですが、インストールしておくとこういうときに役立つんですねえ。

Android SDKのインストール方法… は書きません。というか書けません。
Android SDKのインストール方法が分からない、という方は申し訳ないですが他を探してください。
分かりやすく解説してあるサイトがございます。というか、私がAndroid SDKというものをよく分かっていないので、説明しようにもどういうやり方が正しいのか、正直なところよく分からないのであります。
google:Android SDK インストール

すでにSDKを使ったことがある場合、ドライバはインストール済みだと思いますが、一応Nexus7と接続してドライバが当たっているかどうか確認しておきます。当たっていないようなら「Google USB Driver」をインストールしておきます。「\android-sdk-windows\extras\google\usb_driver」にあるはずです。後述しますが私はここの確認が甘かったようで、すでに当てたつもりが実は当たっていなかった、ような気がします。

PATHを通す

すでにSDKを使ったことがある場合は大丈夫だと思いますが、PATHが通っているかももう一度確認しておきます。
「PATHを通す」という言い回し、要するに環境変数のPATHに特定のディレクトリを登録しておけということです。
どこをPATHに登録されているか、システムのプロパティ>詳細設定>環境変数で確認することができます。

あるいはコマンドプロンプトで「set path」を打ってもずらずらと出てきます。
でも、どこを登録すればいいのか私は実はよく分からない。
私の場合は、PATHにJDKJava Development Kit)のインストールフォルダ(x86とx64両方、C:\Program Files\Java\jdk1.7.0_21\bin と C:\Program Files (x86)\Java\jdk1.7.0_21\bin)、\android-sdk-windows\platform-tools、\android-sdk-windows\toolsを追加してありますが、正直なところこれで正しいのかどうかよく分かりません。あ、書き忘れてましたが作業環境はWindows 7 x64 Proです。
複数の値を追加する場合には、間に半角のセミコロン( ; )を挟みます。

ファクトリーイメージをダウンロードしておく

戻したいAndroidのバージョンに応じたFactory Imageを、こちらから探してダウンロードしておきます。
今回は、Nexus7(2012)のWi-Fi専用モデルを、Android 4.3にしたいので、「Factory Images "nakasi" for Nexus 7 (Wi-Fi)」の「Android 4.3 (JWR66Y)」をクリックします。
ダウンロードページに遷移するので「4.3 (JWR66Y) 」の「Link」をクリックすると、「nakasi-jwr66y-factory-1e503532.tgz」というファイルが落ちてきます。
300MBほどあるので、回線によっては結構時間がかかるかもしれません。

ファクトリーイメージの.tgzファイルが落ちてきたら、念のため正しくダウンロードできたことを確認しておきます。
ハッシュを確認します。私はbkhashesというフリーソフトを使っていますが、bkhashesを起動して「nakasi-jwr66y-factory-1e503532.tgz」をドラッグアンドドロップし、MD5SHA-1を計算してダウンロード元の値と照合します。

次に「nakasi-jwr66y-factory-1e503532.tgz」を解凍しておきます。
tgzを解凍できるものがない場合は適当なフリーソフトを探してダウンロードして解凍しましょう。ちなみに私はずっとexplzh使ってます。

bootloader-grouper-4.23.img
flash-all.bat
flash-all.sh
flash-base.sh
image-nakasi-jwr66y.zip

解凍すると、以上の5つのファイルがあるはずです。
解凍したファイルはどこに置けばいいか?と言われても実はよく分かっていなかったりします。
後述しますが、私は最終的に\android-sdk-windows\platform-toolsにコピーして実行しましたが、別にどこに置いてもいいのかもしれない。

Nexus7のデータをバックアップ

4.3に戻す過程で、中身は全部消えます
中のアプリもデータも全部リセットされ、元に戻せません。
データや設定はすべてバックアップしておきましょう… といっても、今はクラウドにデータがある(またはバックアップがクラウドにある)ケースが多いので、実際のバックアップ量はさほど多くはありませんね。

USBデバッグを有効にする

Nexus7の方ですが、まずUSBデバッグが有効になっているか確認します。
もし有効になっていない場合は、「設定」>「開発者向けオプション」>「USBデバッグ」にチェックを入れます。
「開発者向けオプション」自体が存在しない場合は、タブレット情報のビルド番号を連打して「開発者向けオプション」を出現させます。

PCとNexus7をUSBケーブルで接続します。
接続したときに、Nexus7の方にこういうダイアログが出ている場合がありますので、「常に許可」にしておくと後々楽です。

ブートローダーのロックを解除

ブートローダーを起動します。
PCからコマンドプロンプト

adb reboot bootloader

と打ちます。
あるいは、Nexus7の電源を落としてから、Powerと音量上下ボタンを同時に押すことでもブートローダーに入れます。

ブートローダーです。ドロイド君が倒れています。
写真がぼやけていて分かりにくいですが、赤い字で「LOCK STATE LOCKED」とあります。つまり、現時点ではブートローダーがロックされています。

PCからコマンドプロンプト

fastboot oem unlock

と打ちます。

確認画面が出ます。

アンロックでデータが全部消えることを思い出してください。
YESを押すと後には戻れません。
よく読んで、アンロックして良い場合は音量上下キーで「Yes」を選択して、電源キーを押します。

これでブートローダーがアンロックされます。

アンロックされたので、「LOCK STATE - UNLOCKED」という表示に変わりました。
ブートローダーをアンロックすると、起動時に、画面の下の方に鍵マークが表示されるようになります。

…この画像、デジカメを構えた人の顔がもろに映り込んでますがあまり気にしないでください(汗

ファクトリーイメージを書き込む…失敗

PCの方で、解凍しておいた「nakasi-jwr66y-factory-1e503532.tgz」の中身を置いたフォルダを開きます。

flash-all.bat」を実行します。

なんか途中で処理が停まってますが気長に待ちます
…10分経ちました。まだ停まってます。
さすがにおかしい。

sending 'bootloader' (2100 KB)...

のところで停まっています。

どうにもならないので、Ctrl+Cで停めます。

再度「flash-all.bat」を実行してみますが、同じところで停まります。
Eraseは済んだけど、そこから書き込めない状態で停まってしまいました。

Nexus7の方ですが、ブートローダーには入れますが、Androidは起動はしません。
BootとかSystemとかEraseされて消えちゃってるわけですから、そりゃもちろん起動しませんよね。

困りました。困っていろいろ試してみました。

  • USBケーブルをいったん抜く
  • nakasi-jwr66y-factory-1e503532.tgzの中身を\android-sdk-windows\platform-toolsに置く
  • Nexus7をPower Offにして、また電源を入れる
  • Windows PCのUSBポートに挿してあるもののうち、必要不可欠ではないものを外す
  • Windows をシャットダウンして再起動する
  • 再起動後のWindows PCとUSBケーブルを接続する

これだけ試したらうまくいきました。
上記のうち、どれが奏功したのかは私もよく分かりませんが、Windowsの再起動が効いたのではないか?と考えています。というのは、うっかりPCのモニタをちゃんと見ていなかったのですが、ブートローダーをアンロックした後に、Nexus7のドライバがどうのこうの、というメッセージがWindowsPCの通知領域に出たような気がするのです。つまり、ドライバが実はちゃんと当たっていなかった、あるいはなんらかの理由でドライバが再インストールされたWindowsを再起動しないと入れ直したドライバが効かない、だから失敗していたのかなあ、というのが私の想像。

ファクトリーイメージを書き込む…成功

改めて、\android-sdk-windows\platform-toolsに置いた「flash-all.bat」を実行してみると、今度はどんどん進みました。

いや、Writing Bootloader がFAILEDじゃないですか!失敗してる!
と思いましたがその後OKAYになってるから大丈夫みたいです。
sending 'system' のところでちょっと停まりましたが…

結局無事終わりました。
所要時間は5分くらいでしょうか。
いや、total timeが117.855秒と書いてあるから2分か。体感ではもっと長くかかったような気もしましたが。

再起動します。
懐かしいX字のロゴが出てちょっと安心します。

無事Androidが起動しました。ちゃんと4.3になっています。

ちなみに4.3にして再起動して数分で、4.4へのアップデートが降ってきました。

ブートローダーを再度ロックする

アンロックしたブートローダーを再度ロックします。
再度ロックすることにどんな意味があるのか?と言われるとあまりないような気もしますが、一応人手に渡すものなので、なんらかのきっかけで文鎮化する可能性を最小限度に抑えた方がいいのかなあ、と考えてロックします。

またブートローダーに入った後に、コマンドプロンプトで、

fastboot oem lock

と打ちます。Unlockじゃなくてlockです。

これで再度ロックされました。
「LOCK STATE - LOCKED」に表示が変わります。
また、起動時の鍵マークも出なくなりました。

なお、ブートローダーをアンロックすると、Nexus7のデータが全部消去されましたが、アンロック状態から再度ロックしたときにはデータは消去されませんでした。とはいえ、念のためバックアップを取ってから実行した方がよいのではないかと思います。

4.3になったので

Android 4.4だとFlashが使えないので、Flashが必要なサイトが使えません。
たとえば、gooゲームで、適当な無料ブラウザゲームFirefoxで開いてみても、ゲーム画面が真っ白のままで遊べません。

4.3に戻した後は、Flashが使えるので遊べるようになりました。

また、Android版のATOKフリック入力も、Android4.4では不具合がありました。

キーボードの下二段、「や」とか「わ」を押したときに、文字が一部画面下に隠れてしまうのです。

でも、4.3に戻した後は正常化しました。