AndroidROM编译

引言

⚠⚠⚠:此教程仅适用于能解锁bootloader的机型,如:米,一加,pixel……
Android Rom的编译非常吃配置和硬盘,Android版本越高,Android源码越来越大,所需要硬盘空间也是越来越大。VPS同理,如果你有💴,可以选择VPS,建议选择境外VPS。

以最新的android16配置为例:
最低配置:CPU 4–8 核,16 GB RAM(尽可能 32GB),至少 500 GB SSD(最好 NVMe),启用 zram/swap。可做小规模或实验性构建,但会非常慢且容易 OOM
推荐配置:8–16 核/16+ 线程,32–64 GB RAM,1 TB NVMe SSD(源码+构建输出至少留 400GB 可用)。这样能较顺畅地做全量与增量构建。
理想配置:大量核(32+ 逻辑核)、64 GB 或更多 RAM(Google 推荐 64 GB)、2 TB+ NVMe(或多盘分区),配合 ccache / distcc / ramdisk,可显著加速。官方内部使用多核 + 64GB 举例。

介绍

可编译的开源类原生:
lineageOS
GrapheneOS (仅限pixel)
Crdroid
EvolutionOS
RisingOS
DrepFest
……

构建

本文以Xiaomi13 lineageOS为例

安装工具

如果您之前没有安装过adb和fastboot,可以从Google 下载。运行以下命令解压:

1
unzip platform-tools-latest-linux.zip -d ~

提示:该文件的名称可能与此命令中的名称不完全相同,因此请进行相应调整。

现在你需要将adb和添加fastboot到你的 PATH 中。打开~/.profile并添加以下内容:

1
2
3
4
# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
PATH="$HOME/platform-tools:$PATH"
fi

然后,运行source ~/.profile以更新您的环境。

安装构建包

构建 LineageOS 需要几个软件包。您可以使用发行版的软件包管理器来安装它们。

提示: Linux 中的软件包管理器是一个用于在计算机上安装或删除软件(通常来自互联网)的系统。在 Ubuntu 系统中,您可以使用 Ubuntu 软件中心。更棒的是,您还可以apt install 直接在终端中使用该命令。
要构建 LineageOS,您需要:

1
bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick protobuf-compiler python3-protobuf lib32readline-dev lib32z1-dev libdw-dev libelf-dev lz4 libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

对于 Ubuntu 23.10(mantic)或更新版本,请libncurses5从 23.04(lunar)进行安装,如下所示:

1
2
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

对于早于 23.10(mantic)的 Ubuntu 版本,只需安装:

1
lib32ncurses5-dev libncurses5 libncurses5-dev

此外,对于早于 20.04(focal)的 Ubuntu 版本,还需要安装:

1
libwxgtk3.0-dev

Java

不同版本的 LineageOS 需要不同的 JDK(Java 开发工具包)版本。

  • LineageOS 18.1+:OpenJDK 11(包含在源下载中)
  • LineageOS 16.0-17.1:OpenJDK 1.9(包含在源下载中)
  • LineageOS 14.1-15.1:OpenJDK 1.8(安装openjdk-8-jdk)
    注意:要构建这些版本,您需要从中删除TLSv1和。TLSv1.1jdk.tls.disabledAlgorithms/etc/java-8-openjdk/security/java.security
  • LineageOS 11.0-13.0:OpenJDK 1.7(安装openjdk-7-jdk)

Ubuntu 16.04 及更新版本在标准软件包仓库中没有 OpenJDK 1.7。请参阅Ask Ubuntu问题“如何在 Ubuntu 16.04 或更高版本上安装 openjdk 7? ”。请注意,使用 PPA openjdk-r 的建议已过时(PPA 从未更新其提供的 openjdk-7-jdk,因此缺少安全修复);即使该答案获得最多赞,也请跳过。

Python

不同版本的 LineageOS 需要不同的默认 Python 版本。

  • LineageOS 17.1+:Python 3(安装python-is-python3)
  • LineageOS 11.0-16.0:Python 2(安装python-is-python2)

如果您的默认设置是python3,但您正在构建需要 的分支python2,则有多种方法可以使用它,例如手动进行符号链接或为其创建虚拟环境。我们推荐后者:

使用 生成虚拟环境virtualenv –python=python2 /.lineage_venv。
之后,在每个需要的终端中python2运行 来激活它
/.lineage_venv/bin/activate。

路径~/.lineage_venv可以自由选择,这只是一个例子!

创建目录

您需要在构建环境中设置一些目录。

要创建它们:

mkdir -p ~/bin
mkdir -p ~/android/lineage
/bin目录将包含 git-repo 工具(通常称为“repo”),并且该/android/lineage目录将包含 LineageOS 的源代码。

安装repo命令

输入以下内容下载repo二进制文件并使其可执行(可运行):

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

将~/bin目录放入执行路径中

在较新版本的 Ubuntu 中,它/bin应该已经存在于你的 PATH 中。你可以使用文本编辑器打开/.profile并验证以下代码是否存在(如果缺少,请添加):

1
2
3
4
#set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

然后,运行source ~/.profile以更新您的环境。

配置 git

鉴于repo需要您识别自己才能同步 Android,请运行以下命令来配置您的git身份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git config --global user.email "you@example.com"  
git config --global user.name "Your Name"
```

由于规模较大,某些仓库配置为lfs或Large File Storage。为确保您的发行版已为此做好准备,请运行:

```bash
git lfs install
```

为了避免Change-Id:提交消息中出现重复的尾部,尤其是在挑选更改时,请Change-Id:向 git 制作一个已知的尾部:

```bash
git config --global trailer.changeid.key "Change-Id"

开启缓存以加速构建

ccache如果您想通过运行以下命令来加速后续构建:

1
2
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache

并将该行添加到文件中。然后,输入以下命令~/.bashrc指定要使用的最大磁盘空间量:ccache

1
ccache -M 50G

其中50G对应 50GB 的缓存。此操作只需运行一次。25GB 到 100GB 之间的任何缓存都会显著提升构建速度(例如,通常 1 小时的构建时间可以缩短到 20 分钟)。如果您只为一台设备构建,25GB 到 50GB 的缓存就足够了。如果您计划为多台不共享相同内核源码的设备构建,则建议使用 75GB 到 100GB 的缓存。这些空间将永久占用您的硬盘空间,因此请考虑到这一点。

您还可以启用可选的ccache压缩功能。虽然这可能会略微降低性能,但它会增加缓存中可容纳的文件数量。要启用此功能,请运行:

1
ccache -o compression=true

注意:如果启用压缩,ccache大小可能会更低(每个设备的目标大小约为 20GB)。

初始化 LineageOS 源存储库

输入以下内容来初始化存储库:

1
2
cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-23.0 --git-lfs --no-clone-bundle

下载源代码

要开始将源代码下载到您的计算机,请输入以下内容:

repo sync
LineageOS 清单包含一个合理的 repo 默认配置,我们强烈建议您使用(即不添加任何同步选项)。作为参考,我们的默认值为-j 4和-c。该-j 4部分表示同时支持四个线程/连接。如果您在同步时遇到问题,可以将其降低到-j 3或-j 2。另一方面,-c使 repo 仅提取当前分支,而不是 GitHub 上所有可用的分支。

注意:这可能需要一段时间,具体取决于您的网速。在此期间,您可以去喝杯啤酒/咖啡/茶/小睡一会儿!

提示:该repo sync命令用于更新 LineageOS 和 Google 的最新源代码。请记住这一点,因为您可能需要每隔几天执行一次,以保持代码库的新鲜和最新。但请注意,如果您进行了任何更改,运行该命令repo sync可能会将其清除!

准备构建环境

进入源代码的根目录:

1
2
3
4
5
6
7
cd ~/android/lineage
```

设置您的构建环境:

```bash
source build/envsetup.sh

您可以通过输入以下命令来检查命令是否正确执行:

1
croot

然后,您的 shell 将导航到源的根目录,~/android/lineage或者给出错误。

准备特定于设备的代码
breakfast fuxi

这将下载您设备的特定配置和 内核。

警告

重要提示:某些设备需要先填充供应商目录,早餐操作才能成功。如果您在此处收到有关供应商 makefile 的错误,请跳转到提取专有 blob。早餐操作的第一部分应该已经成功,完成后您可以重新运行 breakfast

提取专有 blob

注意: 此步骤需要您拥有一个已运行最新 LineageOS 的设备,该版本基于您想要构建的分支。如果您没有这样的设备,请参阅从可安装 zip 文件中提取专有 blob。
现在,请确保您的小米 13 已通过 USB 数据线连接到电脑,并启用 ADB 和 root 权限,并且位于该 ~/android/lineage/device/xiaomi/fuxi文件夹中。
然后运行以下extract-files.sh脚本extract-files.py:

1
./extract-files.sh

或者,对于 Python 脚本:

1
./extract-files.py

这些 Blob 应该被拉入/android/lineage/vendor/xiaomi文件夹。如果您看到“命令未找到”错误,adb可能需要将其放入/bin。

开始构建

开始构建吧!
现在,输入:

1
2
croot
brunch fuxi

构建应该开始。

安装构建

假设构建完成且没有错误(完成后会很明显),在构建运行的终端窗口中输入以下内容:

1
cd $OUT

在那里,您可以找到所有已创建的文件。比较有趣的两个文件是:

  • recovery.img,这是 LineageOS 恢复映像。
  • lineage-23.0-20251017-UNOFFICIAL-fuxi.zip,即 LineageOS 安装包。

最后

编译成功后,你就可以通过twrp或者fastboot刷入编译后的产物,测试是否能开机,并修bug


AndroidROM编译
https://yblog.15937.top/2025/10/18/AndroidROM编译/
作者
㪾夜
发布于
2025年10月18日
许可协议