这篇文章会教你在十分钟之内构建一个 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
输出最终文件的目录
输入完命令之后,程序就会自动下载系统包和制作了