#概要
Google PixelやEssential Phone(PH-1、以下PH-1と記します)等、ツールを用いてAndroidのOSのバージョンを上げ下げできる機種はアプリ開発者にとっては非常に便利かと思います。
PH-1でAndroid Qのパブリックベータ版を使用していたのですが、あらかた検証が終わったのとYoutubeのアプリがなぜか落ちまくる状況だったのでAndroid Pにダウングレードしたいと思い、PH-1のDeveloper OverviewからOSのイメージファイルを落としてきてFlashしたのですが、途中でエラーメッセージが出てハマりました。
いろいろ調べて何とか元通りに戻したので、その記録を記します。
#ハマりポイント1:Boot loaderのunlockの後再起動したら「No command」と表示されて動きが止まる
##結論:Factory resetをするしか選択肢がない。Boot loader unlockの前に必ずデータをバックアップする。
![IMG_0144.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38930/56c8d888-301d-de7d-5e05-6a70eede96de.jpeg)Boot loader unlock後再起動したらこんな画面に。
この状態で放置すると数十秒後に自動的に端末は再起動するし、Powerキー長押しで端末の電源を強制的に落として再起動することもできるが↓こんな画面になってしまう。
文字が非常に小さいけど読み取ると
Can't load Android system. Your data may be corrupt. If you continue to get this message, you may need to perform a factory data reset and erase all user data stored on this device.
と書いてあって、Factory resetをしないと使えないという。
仕方ないのでVol Downキーを押して「Factory data reset」を選んでPowerキーを押して選択。
本当にする?と聞かれるので「Yes」を選択。これ以外選択肢がないw。
なのでBoot loader unlock前に必ずデータはバックアップ等する必要がある。
再起動がかかった時にVol Downキーを押しっぱなしにすればBootloaderの画面になる。
ハマりポイント2:Flash時に一部書き込みができないエラーが出る
結論:問題ないように見えるがunlock_critical
をしないと後々困る。
Flash時に
Sending 'abl_a' (780 KB) OKAY [ 0.107s]
Writing 'abl_a' FAILED (remote: 'Flashing is not allowed for Critical Partitions
')
fastboot: error: Command failed
Sending 'abl_b' (780 KB) OKAY [ 0.107s]
Writing 'abl_b' FAILED (remote: 'Flashing is not allowed for Critical Partitions
')
のようなエラーが出ました。
ただ、エラーは出ているんだけどダウングレードは一応成功します(そのように見える)。設定を済ませてアプリも入れた後は普通に使えたのですが、Androidのセキュリティパッチが来てインストールする際にエラーとなって全然インストールできない状態になってしまいました。(セキュリティパッチのダウンロードには成功するがその先に進もうとしたら「更新できませんでした インストールエラー」とでてその先に進まない)
エラーの内容が分からないので本当の原因は不明だし、上記の'Flashing is not allowed for Critical Partitions'
のメッセージとの関連も不明だが、何かしら書き込めないパーティションがあるのかも?という仮定。
flashing is not allowed for critical partitions
でググったらXDA DevelopersのGoogle Pixel 2の掲示板にたどり着きました。
failed remote: flashing is not allowed for critical partitions
ここのレス#2の方の書き込みに
fastboot flashing unlock
の後に
fastboot flashing unlock_critical
とすればいけると書いてあって、手元のPH-1でもこれで「Androidのセキュリティパッチが来てインストールする際にエラーとなって全然インストールできない状態」は解消されました。criticalなものにロックがかかってたと。
ダウングレード後Boot loaderを再度ロックかければ
fastboot flashing lock
これでunlock_critical
でunclockしたcriticalな部分も再度ロックされるようです。
別途flashboot flashing lock_critical
を実行したほうが良さそう?
この後
fastboot flashing lock_critical
も実行してはじめてBoot loaderのロック完了だそうです。
fastboot flashing lock
fastboot flashing lock_critical
の後の再起動後も「No command
」の画面になるので、目的に応じて
- Factory resetをする
- Vol Downキーを押しっぱなしにすればBootloaderを起動する
どちらかの対応が必要です。
#そもそもどうやってダウングレードするの?
ダウングレードの方法についてはPH-1のDeveloper Overviewにも記してありますが、簡単におさらいも兼ねて・・・
※当方はMac使用ですが、Windows利用の方もadb toolsのインストール周り以外は共通の操作かと思います。
##1. (Android Studio等を入れていない方は)fastboot toolのセットアップ
SDK Platform Tools release notes
https://developer.android.com/studio/releases/platform-tools.html
で「Download SDK Platform-Tools for ***
」を選択(***はWin or Mac or Linux)。
Macの場合、ダウンロードしてできた「platform-tools
」をユーザーディレクトリ直下に置いてもOK。例えば
/Users/ユーザー名/platform-tools
にファイルを置く。
自分の場合、.bash_profile
に
export PATH=$PATH:/Users/ユーザー名/platform-tools
を追記してパスを通しました。シェルを再起動すればadb
コマンドが打てるようになるはず。
ターミナルで「adb help
」と打って
Android Debug Bridge version 1.0.41
Version 29.0.1-5644136
Installed as /Users/ユーザー名/platform-tools/adb
(以下略)
とか出てきたら成功。
##2. OSのイメージファイルを落としてくる
Android Builds for Essential Phone
https://www.essential.com/developer/current-builds
で好みのイメージをダウンロードする。
その時の最新のイメージなら「Current Builds
」、以前のイメージ(Android 7系、8系)なら「Previous Builds
」を選んで「Submit Form」をクリック。
「Download (OTA)
」と「Download (Fastboot)
」があるけど、OSのダウングレードは「Download (Fastboot)」を選ぶ必要がある。
##3. PH-1側で「OEMロック解除」「USBデバッグ」を有効に
設定>システム>端末情報
の一番下の「ビルド番号」を何回もタップして開発者モードを有効にする。
一つ前に戻って「システム」に「開発者向けオプション」が表示されるようになるので、その中の「OEMロック解除」「USBデバッグ」をONに。
PCとPH-1をつなぐと「USBデバッグを許可しますか?」と表示されるので、「このパソコンからのUSBデバッグを常に許可する」にチェックを入れて「OK」を選択。
##4. PCとEssential Phone(PH-1)をつなぎ、Boot loaderのunlock
ターミナルで
adb reboot bootloader
と入力しEnter。端末が再起動するのでBootloaderの起動画面になるので
fastboot flashing unlock
と入力しEnter。
PH-1側で「Unlock Bootloader?」と表示されるので、本体側面のVol Down
キーでYes
にカーソルを選択しPower
キーを押すとBoot loaderのロックが外れる。
再起動がかかるので、本体側面のVol Down
キーを押しっぱなしにしてBoot loaderを起動する。ターミナルでadb devices
と入力してPH-1が表示されたら、次に
fastboot flashing unlock_critical
を実行する。終わると再び再起動がかかるので、本体側面のVol Down
キーを押しっぱなしにしてBoot loaderを起動する。
##6. OSイメージのFlash
2.でダウンロードしてきたOSイメージのZIPファイルを解凍した中にflashall.sh
があるので、ターミナルで実行。
cd [OSイメージのZIPを解答してできるディレクトリ]
./flashall.sh
OSの書き込みが開始され、画面に色々ログが表示される。
##7. Boot loaderを再ロック
6.が終わったら再び再起動がかかるのでVol Down
キーを押しっぱなしにしてBoot loaderを起動し、ターミナルで以下のコマンドを実行。
fastboot flashing lock
完了したら再び再起動がかかるのでVol Down
キーを押しっぱなしにしてBoot loaderを起動し、ターミナルで以下のコマンドを実行。
fastboot flashing lock_critical