编译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测试一下镜像。
发表评论