基於 Project Treble 構建 GSI 系統


這篇文章會教你在十分鍾之內構建一個 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 輸出最終文件的目錄

輸入完命令之后,程序就會自動下載系統包和制作了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM