Edited at

[Essential Phone(PH-1)]Android Qベータ版からAndroid Pへのダウングレードでハマった点


概要

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の前に必ずデータをバックアップする。

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