LineageOS 自编译流程

先从官方设备页取参数,再下载源码、准备设备代码并构建

1 先确认设备与分支

打开 LineageOS 官方设备列表,找到准确机型和设备代号。接下来只使用该设备页里的 BuildInstallation 指南。

参数从哪里确认本文写法
设备代号设备概览页<codename>
源码分支该设备的 Build 页<branch>
固件与安装步骤该设备的 Installation 页不使用通用命令替代
先停下来核对: Manifest 仓库存在某个分支,不代表你的设备支持该分支。设备不在官方列表、Build 页没有目标分支,或机型名称相近但代号不同,都不能继续套用本文。

核验于 2026-07-13:官方 manifest 的默认分支是 lineage-23.2,仓库中也存在 lineage-24.0;实际构建仍以具体设备 Build 页列出的分支为准。

2 准备构建环境

准备一台 x86_64 Linux 主机。近期分支需要的内存和磁盘空间很大,具体要求以设备 Build 页为准;官方页面对较新分支给出的参考可达到 64 GB 内存和 400 GB 存储空间。

2.1 安装依赖

依赖包会随 Ubuntu 与目标分支变化。先更新软件索引,再从设备 Build 页复制当前包清单,不要长期复用旧教程里的固定列表。

$ sudo apt update
# 然后执行设备 Build 页当前列出的 sudo apt install ...

2.2 安装 repo 工具

$ mkdir -p ~/bin
$ curl -o ~/bin/repo https://storage.googleapis.com/git-repo-downloads/repo
$ chmod a+x ~/bin/repo
$ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

2.3 配置 Git

$ git config --global user.name "Your Name"
$ git config --global user.email "your@email.com"
$ git lfs install

2.4 配置 ccache

ccache 可以复用部分编译结果。缓存大小按剩余磁盘空间决定,下面以 50 GB 为例:

$ ccache -M 50G
$ ccache -o compression=true

3 初始化并同步源码

3.1 创建源码目录

$ mkdir -p ~/android/lineage
$ cd ~/android/lineage

3.2 初始化 repo

<branch> 替换为第 1 步从设备 Build 页确认的分支。不要直接使用 manifest 默认分支。

$ repo init -u https://github.com/LineageOS/android.git -b <branch> --git-lfs --no-clone-bundle

3.3 同步源码

$ repo sync
先用默认参数: LineageOS manifest 已为 repo sync 提供默认并发与当前分支配置。同步失败时可以降到 repo sync -j2 重试;不要把 --force-sync 当成日常参数,它可能覆盖本地仓库状态。

第三方镜像可能存在同步延迟或目录差异。使用镜像前先看镜像站自己的 LineageOS 帮助页,并以官方 manifest 和设备 Wiki 校验分支。

4 准备设备代码

进入源码根目录并加载构建环境,然后用设备代号准备目标。对于官方支持设备,Build 页会给出该设备当前应执行的命令。

$ cd ~/android/lineage
$ source build/envsetup.sh
$ breakfast <codename>

4.1 提取专有文件

只有设备 Build 页要求时才做这一步。专有文件的来源、目标目录和脚本名称都与设备及分支有关;照该页面进入指定设备目录,再执行页面列出的脚本。

# 在设备 Build 页指定的目录执行其中一种;不要凭经验猜路径
$ ./extract-files.py
# 或者该设备页面明确写出的 ./extract-files.sh
这不是移植教程: 不要从搜索结果里拼接 device、kernel 和 vendor 仓库,也不要把另一台相似设备的树直接换代号。非官方设备适配涉及分区、内核、SELinux、专有文件和启动链,超出本文范围。

5 开始构建

再次确认当前分支、设备代号和设备 Build 页一致,然后从源码根目录构建:

$ cd ~/android/lineage
$ source build/envsetup.sh
$ brunch <codename>

成功后,设备 Build 页会说明主要产物;通常可以在 $OUT 对应目录找到安装包与该设备需要的镜像。先记录文件名和校验值:

$ echo "$OUT"
$ sha256sum "$OUT"/lineage-*.zip
不要按时间判断是否成功: 以命令退出状态、日志末尾和产物是否完整为准。构建耗时受 CPU、内存、存储和缓存命中率影响很大。

6 安装前复核

构建完成不等于可以套用一组通用刷入命令。回到同一设备的 Installation 页面,从头核对要求:

以下命令只用于确认电脑是否识别设备,不会写入分区:

$ adb devices
$ fastboot devices
本文不提供通用写分区命令: A/B、动态分区、Recovery-as-boot、AVB 等设计会改变安装步骤。只执行设备 Installation 页明确列出的命令;不要把别的机型教程中的 fastboot flash、Format Data 或 sideload 顺序搬过来。

进入官方设备列表,打开对应 Installation 页面 →

7 更新源码与重建

更新前先检查本地改动,避免把同步问题和自己的补丁混在一起:

$ cd ~/android/lineage
$ repo status
$ repo sync
$ source build/envsetup.sh
$ breakfast <codename>
$ brunch <codename>

设备失去官方支持、Build 页撤下目标分支或安装要求改变时,先重新评估,不要只因为本地还能编译就继续安装。

8 安全排错

repo sync 反复失败

先降低并发执行 repo sync -j2,并检查磁盘、网络和系统时间。不要一上来使用 --force-sync

breakfast 报 vendor 或设备配置缺失

回到设备 Build 页的专有文件章节,确认来源系统、分支和脚本名称。不要临时克隆一个同名 vendor 仓库来“补齐”。

构建被系统终止

free -hdf -hccache -s 检查内存、磁盘与缓存。OOM 或磁盘耗尽应先解决资源问题,再重试构建。

需要求助时

保留设备代号、分支、完整命令、首个实际错误以及错误前后的日志。只贴最后一行通常无法定位问题。

官方入口:设备 Wiki · Manifest 仓库 · Google repo 文档

Qiaoshuo · 返回首页