這篇文章會教你在十分鍾之內構建一個 GSI 系統,你可以在任何設備上刷入。本着用多少講多少的原則,只會介紹部分基礎知識,其余的你將會在實踐中收獲更多。在閱讀本文詳細內容之前,請記住:
准備要充分,思維要敏捷,分析要精准,實踐要大膽
認識 Project Treble 和 GSI
在 Android 8.X 更新時,Google 引入了對 Project Treble 的完全支持,它將 Android 的軟件部分與硬件部分互相分離,使得開發者在適配系統時可以更輕松。通俗來講,就是系統的硬件驅動和軟件是分離存放的
需要准備的
- 一台裝有 Linux 的電腦(虛擬機)
- 一份系統包(system.img)
- 一台測試用的手機/平板(可選)
- 一點點 Linux Shell 基礎
- 一點點 Android 常識
選擇你的工具
要基於支持 Project Treble 的系統制作 GSI,一般有兩種工具可選:
- 小新 sGSI
- ErfanGSI
sGSI 與 GSI 的區別:
一般來說,sGSI 僅支持高通處理器的設備,而 GSI 支持任何設備(理論值)
你需要根據自己的需要選擇工具中的其一,本文只介紹 ErfanGSI
選擇 GSI 原包
GSI 構建工具能讓你把任何 Android 9.0 及以上的 MIUI、Flyme、Xperia UI 制作成能讓其他機型使用的 GSI,它們被稱為原包,對於 GSI 原包的選擇有着如下要求:
- 原包的 Android 版本需大於或等於 9.0
- 原包為 ARM-64 架構(最佳)
- 原包為高通驍龍機型制作(最佳)
基於 OTA 升級包制作
這可能是入門制作 GSI 的最快方式,只需要任何一款機型的完整升級包就可以開始制作。如果你初次入門,這里為你准備了一個練手的素材:適用於 小米8 的 MIUI 12.5
首先進入 Linux 系統,並切換到 root 用戶,先下載構建工具
創建一個工作文件夾: mkdir workspace
進入工作文件夾: cd workspace
下載構建工具: wget https://github.com/erfanoabdi/ErfanGSIs/archive/refs/heads/master.zip
解壓構建工具: unzip -o ErfanGSIs-master.zip -d ./
然后,需要設置運行環境
運行設置腳本: ./setup.sh
等待腳本運行完畢之后,就可以開始制作了
./url2GSI.sh --ab -c https://bigota.d.miui.com/V12.5.2.0.QEACNXM/dipper_images_V12.5.2.0.QEACNXM_20211028.0000.00_10.0_cn_f4ae6b9441.tgz MIUI
這里按順序解釋一下 url2GSI 的一些參數:
--ab
制造 A/B 分區的 system.img,如果需要 A-Only,則輸入 --aonly-c
清理工作區- 原包的下載鏈接
MIUI
原包類型,目前 ErfanGSI 不支持 Android 11 及以上的 MIUI、Flyme 等定制系統的方案,可以直接輸入Generic
使用通用模式
輸入完命令之后,程序就會自動下載系統包和制作了
基於已有鏡像制作
如果已經有 system.img 這樣的鏡像,則可以直接基於鏡像來制作,這里要注意鏡像的格式必須是 EXT4,可以輸入 file system.img
來查看詳細信息,如果不是 EXT4,則先用 mkfs.ext4
制作
首先需要掛載鏡像為 loop
設備
進入工作目錄: cd workspace
創建掛載文件夾: mkdir system
掛載文件: mount ./system.img ./system
創建輸出文件夾: mkdir output
然后,開始制造鏡像
開始 GSI 化處理: ./make.sh system MIUI AB ./output
這里按順序解釋一下 make 的一些參數:
system
掛載 system.img 的文件夾MIUI
原包類型,目前 ErfanGSI 不支持 Android 11 及以上的 MIUI、Flyme 等定制系統的方案,可以直接輸入Generic
使用通用模式AB
制造 A/B 分區的 system.img,如果需要 A-Only,則輸入 Aonly./output
輸出最終文件的目錄
輸入完命令之后,程序就會自動下載系統包和制作了