なんとなく生きてます

雑記帳備忘録チラシの裏

MacでのAndroid端末のファクトリーイメージの焼き方、ダウングレードの方法 

Android端末のファクトリーイメージを焼く機会があったのですが、その時に少し苦労したので 今後のためにここにまとめておくこととします。

実際に僕はMacを使ってリリースされたばかりのAndroid 6.0のマシュマロのファクトリーイメージをNexus5にインストールしましたが、基本的には他の機種、バージョンでも簡単に応用できます。また、ダウンロードするファクトリーイメージを古いバージョンのものにしてダウングレードを行うことも可能です。

ホントはGoogleデベロッパのサイト見れば手順は英語で書いてあるんですけどまあ日本人なんで。。。。 あとサイトの言語設定を日本語にするとローカライズされてなかったりとかでバージョンが古いのしかなくて結局英語版読まされる羽目にもなるので。

なお、Android SDK等がすでにインストールされていることを前提としたいと思います。それがまだの方はGoogle先生に聞いてください。

MacでのAndroid開発環境構築方法 結構参考になると思います。

手順はおおまかに
* adbコマンドを使えるようにする
* USBデバッグモードの起動
* 端末でのfastbootモードの実行、焼く

という流れで行われます。それでは以下にそれぞれの手順の説明を書いていきます。 なお、ましゅまろのファクトリーイメージは公式サイトからダウンロードが可能です。事前に自分の端末に合ったものを落として解凍しておきましょう。あとバックアップはとっておきましょう。(実行するとメーカー保証の対象外となる可能性があるので全て自己責任でお願い致します。)

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

これはSDKのパスを通すことで可能になります。デベロッパのサイトの説明platform-tools云々かんぬんがここに当たります。AndroidStudioが入っているならここが参考になると思います。(要はAndroidSDKのパスがわかればなんでもいいです。)引用になりますが、

export PATH=$PATH:"SDKのパス/platform-tools"
adb kill-server
adb start-server

SDKのパスが通り、adbコマンドが通るようになります。

USBデバッグモードの起動

ここは普段からAndroid開発されてる方はすっ飛ばしてもいいのですが、そうでない方はAndroidの「設定」 ⇒ 「端末情報」からビルド番号を表示し、そのビルド番号を7回タッチしてください。(機種、バージョンによってビルド番号の場所が異なる場合があるのでその際は頑張って探してください。以下についても同様です。)すると「設定」の項目に「開発者向けオプション」という項目が追加されるはずです。今度はここをタッチして「USBデバッグ」という項目にチェックを入れてください。この状態で端末とMacをつないでUSBデバッグモードになっている表示が確認できればこの手順は完了です。

ちなみに、、、USBデバッグモードにしても認識されない、次の手順のadbコマンドが通らない場合は

端末の設定からMTPのチェックを外してください(外し方は各端末によって異なるのでGoogle先生へ) 参考になるサイト様
scriptlife.hacca.jp

fastbootモードの実行、焼く

ではまずUSBを接続したままターミナルで最初に用意したイメージファイルがあるディレクトリまで移動します。そしてその場所で

adb reboot bootloader

と打ちます。そして

fastboot oem unlock

と入力。これは端末によってすでにロックが解除されている等のエラーメッセージが出る場合がありますがスルーしてもらって結構です。

そしてダウンロードしたイメージファイル(ここではhammerhead-MPA44I-preview-2ebbc049.tgzを解凍して出てきたhammerhead-MPA44Iとします。)の中にあるfinish-all.sh を実行します。カレントディレクトリはイメージファイルのある位置にあるはずなので(なかったら移動してください)

sudo ./flash-all.sh

を実行します。すると記述されているシェルスクリプトが実行されるのでとりあえず待ちます。これでマシュマロが焼き上がりました。最後にセキュリティの観点からブートローダーをロックして完成です。USBデバッグモードで接続を保ったままターミナルから

fastboot oem lock

を実行します。以上で手順は完了です。

追記 気になったので調べたのですが、このflash-all.shというシェルスクリプトの最後の行の

fastboot -w update hogehoge.zip

は、zipファイルの中のそれぞれのファイルhoge.imgそれぞれに対して

fastboot flash hoge1 hoge1.img
fastboot -w
fastboot reboot

fastboot flash hoge2 hoge2.img
fastboot -w
fastboot reboot
...

を実行するのと等価です。ファクトリーイメージのzipがなぜかシェルスクリプトから開かない!なんてときはzipファイルの中身を調べて、これでスクリプトを書き換えて見れば上手くいくはず!!