昨日はnexus7(2013)のWifiモデルをAndroid6.0(marshmallow)にしたのでその忘備録というか顛末を書こうかと。
ことの始め
今回何故Android6.0にしようかと思ったかというと、6.0は結構今まで欲しかった機能とかが多く、触りたいなと思っていました。ですが、私の所持しているZefone2にはいつくるかわからないし、なんとか今年は対象となったnexus7(2013)には早くても12月ごろにならないとOTAはふってこないし、かといってファクトリーイメージ焼くのはなぁと思っていました。ちょうど今年は新しいnexusのnexus5xがまあまあの出来(多少の不満はあるが)だったので急に欲しくなってきてしまいました。今週の月曜日はその物欲と一日格闘していました。まあ、いろいろあり思いとどまることが出来ました。いろいろの中で一番の決め手となったのはOTAファイルの差分で手動強制アップデートをブートローダのアンロックやカスタムリカバリを導入する必要がないということを知り、これをやろうと思った月曜日だった。
手動強制アップデート編
今回はmacにおける手順を書きます。Windowsでも出来るので気になる人はググってみてください。
準備
adb sideloadというコマンドを利用します。そのために必要なものとして、Android SDKが必要になります。SDKが導入できたら、SDKマネージャーを起動し、その中のToolsにある、Android SDK Tools、Android SDK Platform-tools、Android SDK Build-toolsをインストールします。それらが出来たら、adb コマンドのPathを通します。使用しているターミナルのシェルスクリプトファイルにPathを書き込みます。私は標準のbashを使用しているので~/.bash_profile
にexport PATH=$PATH:~/sdkのあるディレクトリまでのパス/sdk/platform-tools
を追加して、ターミナルを再起動するか$ source ~/.bash_profile
をターミナルに打つかして変更を適用させます。次に、アップデートに必要なOTAのzipファイルをこのサイトでで今回はnexus7(2013)wifiモデルのzipファイルをダウンロードしました。このzipファイルは展開する必要はありません。
nexus7側の操作
nexus7の方はリカバリモードでの起動をするために一度電源をオフにしてその状態で電源ボタンとボリュームダウンボタンを同時に長押しを行うとブートローダーが起動します。起動したらボリュームボタンでRecovery modeを表示させて電源ボタンを押して決定します。(ブートローダーが起動している間はボリュームボタンが移動、電源ボタンが決定ボタンと割り当てられており、画面タッチは無効となっています)Recovery modeを起動するとコマンドが指定されていませんと表示されるので電源ボタンを押しながらボリュームアップボタンを押すとnexusの標準リカバリが起動してその中からapply update from adb
をボリュームボタンで選択をし、電源ボタンで決定します。nexus7をmacに接続をしておきます。
mac側の操作
ターミナルで$ adb devices
を実行すると端末のIDがちゃんと接続ができていれば表示されます。$ adb sideload ~/zipファイルがダウンロードされているディレクトリまでパス/zipファイル名.zip
を実行し、最後にnexus7にInstall from ADB complete
が表示されれば無事完了です。
やってみた結果
最後までとんとん拍子で進み、だんだん進捗も進んでいるなと思っていて、終わったかなと見たら、nexus7の表示されている文章の中にはfailureの文字を発見してしまい、「えっ、失敗?Systemファイルなんて一切触っていないのに」と思ったその瞬間「まさか、ビルド番号?」と思い、確認してみるとzipファイルの対象ビルド番号はAndroid5.1.1 LMY48Mで実際の自分の端末のビルド番号はLMY48Tであり、失敗した理由がここにあった。うわー、アップデートしなければよかったと後悔しました。LMY48Tはnexus7の最新バージョンであり、zipファイルを公開するXDAにはzipファイルはまだ挙げられていません。
行き詰まった
そうすると選択肢としては以下の三つ。
- XDAにzipファイルが公開されるのを期待する
- 諦めて、OTAが来るのを待つ
- ブートローダアンロックを行いAndroid6.0のファクトリーイメージを焼く
以上のようになっていて、迷った挙句ファクトリーイメージを焼くことに決めた。
ファクトリーイメージ編
注意
ファクトリーイメージを焼くためにはブートローダアンロックを行わなければならないためメーカー保証が効かなくなることやアンロックを行うと初期化されるので内蔵データがなくなってしまうこと等いろいろなデメリットも存在するためそこらへんを理解した上で自己責任で行ってください。
準備
adbコマンドが使えるようになっていることが最低条件。次にnexus7のファクトリーイメージのzipファイルをここからダウンロードして、zipファイルを展開しておく。ターミナルで展開したファイルのfinish-all.sh
があるディレクトリまで移動しておく。
ブートローダアンロック
次にnexus7をmacと接続して、ターミナルで$ adb reboot bootloader
を実行し、その後$ fastboot oem unlock
を実行します。実行完了するとアンロックされたこととなります。
ファクトリーイメージを焼く
ここまでくると後はファクトリーイメージを焼くだけです。引き続きターミナルで$ sh flash-all.sh
を実行すると後は焼かれるのを待つだけです。無事完了するとmarshmallowの起動画面がnexus7に表示されるはずです。最後に再び$ adb reboot bootloader
を実行し、$ fastboot oem lock
を実行してブートローダをロックしといたほうがセキュリティ的には安全です。
初めましてmarshmallow
なんか壁紙がmacみたい。marshmallowはいろいろな部分が変わっているので何かあればブログに書こうと思います。
おまけ(マルチウィンドウ機能)
せっかくだから
今回せっかくブートローダをアンロックしたのでmarshmallowから開発者向けに公開されているマルチウィンドウ機能を使いたいなと思い、いじってみました。
準備
すでにrootを取っている方は簡単にできるので今回は触れないでrootをとらないで有効化する方法を書いておきたいと思います。ここでもやるのは自己責任でやってください。まずはカスタムリカバリを導入しなければならないので、nexus7用のカスタムリカバリをダウンロードしておきます。ここではブートローダは既にアンロックされているということで話を進めます。ターミナルでダウンロードしたカスタムリカバリがあるディレクトリまで移動しておきます。nexus7をmacと接続し、$ adb reboot bootloader
を実行しておきます。
カスタムリカバリの導入
いよいよカスタムリカバリを導入します。ターミナルでfastboot flash recovery カスタムリカバリのファイル名
を実行します。
systemファイルの書き換え
今度は有効化するためのsystemファイルの書き換えを行います。再び、nexus7をブートローダ画面にして、recovery modeにして、そこのsystemのmountを行います。その後、ターミナルで$ adb pull /system/build.prop
を実行し、ファイルを抜き取ります。build.propをエディタで開き、その中のro.build.type=user
をro.build.type=userdebug
のように書き換えます。それを保存したら、ターミナルで$ adb push build.prop /system
を実行します。ここまでしたら、nexus7を再起動を行い、設定の開発者オプションの中にマルチウィンドウの設定があれば成功です。
軽く使ってみて
使い方としては開いているアプリ一覧でばつ印の隣の四角を選びレイアウトを選択し使います。
写真の通りですがまだまだバグが多く、また、この画面にするのにも手間が多いという感想です。iPadのsplit viewのような使いやすさにはまだまだ及ばない感じです。今後良い方に改善していってくれるといいなと思います。今回はrootは取っていなかったので以外と簡単にやりたいことができたなという感想でした。