编译lineage os 20通用系统镜像(GSI)教程

因为红米note 10 pro的系统底层停留在Android 13,所以保持官方内核能刷的最高安卓版本就是Android 13。有大佬做出了Android 14 和Android 15的包,理论上可以以这些官改包作为底包,刷更高安卓版本的GSI。为了稳定性考虑,还是以官方最后一个版本作为底包,刷lineage os 20。

说实在的我对编译系统这种事从来没有过经验,这里使用了AndyCGYan大佬的一键脚本。

首先创建目录用来保存源代码以及编译过程中产生的各种文件:

mkdir lineage-20-build-td

light版本我试过,编译出来的gsi不能进入系统,所以这里使用的是td版本。

进入目录:

cd lineage-20-build-td

接下来需要安装一些依赖,我使用的是ubuntu24.04.

sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev platform-tools -y

编译过程中需要使用到libncurses5这个依赖,但是这个软件包已经被移除了,所以需要执行:

wget https://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2_amd64.deb && sudo dpkg -i libtinfo5_6.3-2_amd64.deb && rm -f libtinfo5_6.3-2_amd64.deb
wget https://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncurses5_6.3-2_amd64.deb && sudo dpkg -i libncurses5_6.3-2_amd64.deb && rm -f libncurses5_6.3-2_amd64.deb

安装过程中也需要java和python,但是似乎不配置也可以,可能是源代码自带了,如果出现错误,可以考虑java与python的环境配置问题。

然后安装配置repo,这一步可能需要配置镜像源或自行解决网络环境问题。

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

设置git的身份

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

其中第一行引号里填邮箱,第二行填名字,这里仅用于拉取代码,只要填上就行了。

repo初始化

repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs

可能需要等几分钟,耐心等待就好了。

拉取编译脚本和补丁相关的脚本

git clone https://github.com/AndyCGYan/lineage_build_unified lineage_build_unified -b lineage-20-light
git clone https://github.com/AndyCGYan/lineage_patches_unified lineage_patches_unified -b lineage-20-light

这里要注意一下,因为代码老旧的原因,一些补丁是有冲突的。在脚本运行过程中会因为打补丁失败而导致运行失败。实际上,一部分补丁不打也几乎没有影响。所以可以忽略这些补丁。这就要对原脚本进行修改。用文本编辑器打开lineage_build_unified/buildbot_unified.sh,注释掉下面几行:

set -eE
trap '(\
echo;\
echo \!\!\! An error happened during script execution;\
echo \!\!\! Please check console output for bad sync,;\
echo \!\!\! failed patch application, etc.;\
echo\
)' ERR

然后执行脚本

bash lineage_build_unified/buildbot_unified.sh treble 64VN 64VS 64GN

64VN 64VS 64GN是编译的类型,可以选择一个或者多个。

64代表系统类型是arm64

V代表不含谷歌框架

G代表包含谷歌框架

N代表不自带root权限

S代表自带root权限

可根据自己的需要选择。

repo sync过程中可能因为网络问题出现同步错误,不要着急,等脚本执行结束后再执行一遍就可以了,本地和远程仓库一致的代码就不再需要下载,只会同步刚才出现错误的地方。

然后慢慢等就可以了,编译需要的时间和你的电脑配置有关系。可能要好几个小时。

系统源代码和编译产生的文件加起来大概有260GB,确保硬盘空间充足。

编译完成后编译好的镜像在~/build-output。其中~是你的主目录。

这样编译就完成了,可以用实机的DSU测试一下镜像。

发表评论