基于 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