Android 8.0以降に搭載された「Project Treble」という機能。これは利用者側の機能というよりは「スマホメーカー」向けの機能で、簡単に説明するとOSアップデート時にメーカーが行う作業が簡単になるというものです。
ただし、Android 8.0を搭載した端末でも、一部非対応のものも存在します。基本的に、発売時にAndroid 8.0以降を搭載していれば対応していますが、アップデートでAndroid 8.0に対応した機種は対応していない物が多いです。
とはいえ、これは2017年での話です。2022年現在の端末はAndroid 12~13搭載の機種がほとんどのため、ほぼすべての機種が対応しています。
そして、この機能は先程述べた通り”メーカー向け”の機能なのですが、この機能を活用することでGSI(Generic System Image)を導入できます。GSIは、多くのカスタムROMや最新バージョンのAndroid OSを起動・導入することが出来ます。今回の記事ではこの方法を紹介します。
なお、Android端末でのカスタマイズは、メーカーごとに方法が異なります。機種やメーカーに応じてご自身で調べつつ導入を行ってください。
システム要件
GSIを導入するに当たり、Android端末に求められる条件は以下です。
- Android 8.0~を搭載(新しいバージョンであればなお良い)
- Project Trebleに対応(アプリで確認可能)
- ブートローダーアンロック可能である
2つ目までは多くの端末が満たしているはずですが、3つ目に関しては、国内キャリア・メーカーから発売されている機種はブートローダーアンロックが塞がれている事が多いです。この場合は導入できません。
ただし、要件を全て満たしていても、GSIが正常に起動しない機種も一部存在します。
なお、GSIの導入にあたり、基本的なことではありますがバックアップ等はきちんと行っておきましょう。
スポンサーリンク
「GSI」の選び方
Project Treble対応端末向けのROMは「GSI」(Generic System Image)と呼ばれ、基本的には「system.img」のみが配布されています。
これを端末に導入することで、カスタムROMや最新OSが起動できるようになります。ただし、GSIにもいくつか種類があるので、この選び方を紹介します。
Android端末の情報を確認
GSIを導入するに当たり、いくつか端末の詳細を確認する必要があります。アプリで簡単に確認が可能ですので、以下のアプリをインストールします。
アプリを起動すると、以下のようにGSI導入に必要な情報が表示されます。
アーキテクチャ
「アーキテクチャ」とは、端末に搭載されているCPUの基本設計、仕組みのことです。いくつか種類があるのですが、現在主流のアーキテクチャは「x86」「x64」「arm」です。この内、「x86」「x64」は主にパソコン向けのCPUで使用されています。
一方、Android端末の機種で搭載されている以下のSoCはすべて「arm」アーキテクチャを採用しています。
- Qualcomm Snapdragon
- MediaTek Dimensity
- MediaTek Helio/MTシリーズ
- Samsung Exynos
このため、特殊な機種を使用していない限り「arm」のアーキテクチャとなります。
32bit・64bit
Android等のOSにおけるbit数は、一度に処理できる情報量を表します。Androidでは「32bit」「64bit」の2種類が存在します。GSIもbit数に応じて選択する必要があります。
ただし、多くのAndroidスマホは、2018年頃を境に64bitのものがほとんどになっています。このため、「ARM64」といった記載のあるものを選べば基本的に間違いないです。
A-Bパーティション
これはAndroid 7.0以降で対応した機能で、システムパーティションを分割することでアップデートをシームレスに行える機能です。
こちらも対応状況により、選択するGSIが異なります。
端末に合ったGSIを選択する
GSIは、かなり多くの種類がリリースされており、好きなものを選択できます。すべてが起動できるとは限りませんが、多くのROMが動作するはずです。
XDAなどで好きなものを探しても良いですが、初めてであれば以下のページから選ぶのがおすすめです。AndroidバージョンごとにGSI一覧が掲載されています。
なお、GSIは多くの機種で動作できるよう、アーキテクチャ・ABパーティションの対応/非対応などの種類が用意されている他、root権限の有無、GAppsの有無など、複数の種類がリリースされているのが一般的です。
GSIで使用されている単語を以下で解説していますので、こちらを参考に自身の端末/用途に合ったものを選択します。
GSI関連の単語の解説
GSIの開発に大きく貢献している開発者「Phusson氏が開発しているGSIなどで使用されている単語です。意味は私の解釈なので、もしかしたら一部違う箇所もあるかもしれません。もしあったらコメントにて情報をいただければと思います。
単語 | 意味 |
---|---|
arm / arm32 / arm64 / x86 | アーキテクチャのこと。端末のCPUに応じて選択します。 最近のほぼすべてのAndroid端末はarm64ですが、確認したい場合は 「CPU-Info」などのアプリで確認できます。 |
GMS / GApps | GooglePlayなどのGoogle製アプリを含むものに記載されています。 最近は記載がなくても含まれているものが多い印象です。 |
Secure | root権限が含まれないGSIに記載されています。とは言え、このROMでもMagiskを導入すればroot化は可能。 |
Vndklite | この記載のあるGSIはsystemファイルの書き込み等が可能です。 ただし、機種によっては不可能な場合もあります。 |
floss | 「Free/Libre and Open Source Software」の略。 GAppsの代わりにオープンソースのストアアプリ等が導入されています。 脱Googleをしたい方向け。 |
vanilla | GAppsやFlossのアプリを一切含まない純粋なGSI。 |
slim | 基本的にGAppsを含むROMで使われる単語です。GooglePlay関連など、最低限のGoogleアプリのみ搭載している、ということです。 |
省略表示されている場合もある
以下のように、アルファベット3文字で表される場合も多いです。
1文字目 | a:A Only(A/Bパーティション非搭載)機種用 b:A/Bパーティション搭載機種用 |
2文字目 | v:GAppsなど非搭載(Vanilla) g:GAppsを含む |
3文字目 | S:Superuser(要はroot権限)を含む N:root権限なし(Non rooted) |
他にもあったら是非コメント欄で教えてください。
スポンサーリンク
GSIのインストール手順
今回の記事では、中国で発売されているLenovo製のAndroidタブレット「Legion Y700」を使用します。SoCには「Qualcomm Snapdragon 870」を搭載しており、アーキテクチャは「arm64」、ABパーティション対応となっています。
なお、GSIのインストール方法は主に2種類あります。
- TWRPなどのカスタムリカバリから導入
- fastbootモードでの導入
近年の機種では、パーティション構造の複雑化や、暗号化の強化などが原因と思われますが、TWRPがリリースされない場合が多く、Legion Y700も同様です。このため、GSIの導入は2つ目の「fastbootモード」での導入が主流です。今回もこちらを使用します。
fastbootコマンドは、Androidのブートローダーで実行できるコマンドで、基本的にほぼすべてのAndroid端末で使えます。よほど特殊な機種でなければ使用できるはずです。
事前準備
PCの準備
fastbootコマンドを使用するには、PCが必要となります。OSはWindows/macOS/LinuxのいずれでもOKですが、fastbootコマンドの実行には初期設定が必要となりますので、Windowsの場合は、以下の記事を参考にセットアップを行ってください。
ブートローダーアンロック
GSIを導入するには、Android端末のブートローダーをアンロックする必要があります。
こちらはメーカーや機種によって方法が全く異なりますので、ご自身で調べてアンロックを行ってください。
なお、今回使用する「Legion Y700」のブートローダーアンロックは以下の記事にて手順を紹介しています。
開発者向けオプションより「USBデバッグ」を有効化し、USBケーブルでパソコンに接続し、以下のコマンドを入力します。
adb reboot bootloader
通常のfastbootモードが起動します。
Android 10以降を搭載した端末では、fastbootモードの仕様が変更されており、system等の変更が不可能になっています。その代わり、「fastbootd」が追加され、こちらではsystem等の変更が可能です。
以下のコマンドを入力して「fastbootd」を起動します。
fastboot reboot fastboot
GSIの導入前に「system」パーティションのワイプを行います。
この手順を踏まないと、GSI導入に失敗したり、起動できないことがあります。
以下のコマンドを実行すればOK。
fastboot erase system
以下のコマンドを入力後、半角スペースを入力し、「system.img」を画面上にドラッグアンドドロップします。
fastboot flash system
実行すると勝手に処理が進んでいきます。しばらくして「Finished」と表示されれば無事導入が完了です。
OSが大きく変化するため、多くの場合、初期化を行わないと起動できません。
たまに起動できる場合もありますが、明らかに挙動がおかしくなります。
ということで、以下の2つのコマンドを実行して初期化します。
fastboot erase userdata
fastboot erase metadata
これでGSIの導入が完了しました。以下のコマンドを実行し、再起動すればGSIが起動するはずです。
fastboot reboot
GSIが起動しない場合
GSIが正常に起動しない場合、以下を確認してください。
- 初期化は正常に行えているか
- 元のAndroidバージョン/GSIのAndroidバージョンがかけ離れすぎていないか
- Project TrebleもAndroidのアップデートとともに改善が進んでいるため、古い端末で最新OSは動作しない場合があります。
- GSIは機種に適合したものを使用しているか
GSIは正常に動作するものを使用しているか
→独自UIを移植したGSIは起動しないものが多いです。AOSP GSIなどを使用し原因の切り分けを行いましょう。
また、Magiskを導入している場合、バージョンによっては起動しない場合があります。Magiskを一度アンインストールして再度起動してみてください。
スポンサーリンク
GSIにて不具合が発生する場合
Project Trebleの仕様上、端末固有のデバイスドライバは、system.imgとは別に格納されており、GSIもそちらを使用するため、ほぼすべてのハードウェアが動作します。
ただし、メーカーの実装方法によっては、一部ハードウェアが正常に動作しない場合があります。
一般的な不具合は「Phh Treble Settings」から簡単に改善可能
「Phh Treble Settings」は、GSIの開発に大きく貢献している「Phusson氏」が用意した設定項目であり、ほぼすべてのGSIに搭載されています。
Legion Y700の場合、GSIではイヤホンジャックが正常に動作しませんでしたが、「Phh Treble Settings」→「Qualcomm features」→「Use alternate audio policy」を有効化するだけで簡単に動作しました。
Magisk等で改善可能な場合も
機種固有の不具合は、設定だけでは改善できない可能性が高いです。Legion Y700でも、明るさの自動調整が使用できないなど、多少の不具合がありました。これは設定での改善が難しいので、Magiskモジュールを作成して改善しました。
※当然ながら他の機種では使用できません。
このMagiskモジュールは、Androidに搭載されている「Overlay」という仕組みを利用し、一部設定を上書きして不具合を改善しています。参考にしたのは以下のページ。
DSU Loaderを活用すれば、GSIを導入せずにお試し起動が可能
GSIは多くの種類があり、機能の豊富さ、UIデザイン、操作性など、様々のものが存在します。好みのものを見つけるには自分で試すのが一番ですが、毎回GSIの導入を行うのは正直面倒です。
こんなときに便利なのが「DSU Loader」です。この機能はAndroid 11以降で正式に搭載された機能で、GSIを導入せずに起動できる機能です。一部例外を除き、ブートローダーアンロックは必要なものの、root権限がなくても使用可能です。
DSU LoaderでGSIを起動した場合、実際に端末に導入した場合と同じように動作するため、設定項目やアプリの確認、不具合の確認などが行なえます。
元のOSに戻るには再起動するだけでOK。
コメント
コメント一覧 (3件)
[…] りとらいん MT8168のOEM向けタブレット「UATTAB001」にAndroid 12L(GSI)&Magiskを導入するSMART ASW Project Treble対応のAndroid端末にGSIをインストールする方法(カスタム… […]
FASTBOOTのやり方だけど、vbmeta焼きと「fastboot -w」を追加でやらんと起動しない事が多いぞ。
leeco le2 x520を使用しています。
だめだと思いますがproject trebleを有効化する方法はありますか?