为 hydrogen 构建

为 hydrogen 构建

keyboard_arrow_left 返回概览

为以下设备构建 LineageOS小米 Max

hydrogen

简介

这些说明有望帮助您从小米 Max 的出厂系统开始,解锁引导加载程序(如果需要),然后下载所需的工具以及适用于您设备的最新 LineageOS 源代码(基于 Google 的 Android 操作系统)。使用这些,您可以构建 LineageOS 安装 zip 包和 LineageOS Recovery 镜像,并将它们安装到您的设备上。

很难说遵循这些说明需要多少经验。虽然本指南当然不适合完全的新手,但这些步骤也不需要软件开发博士学位。有些读者会毫不费力地轻松完成这些步骤。另一些人可能会在最基本的操作上挣扎。由于人们的经验、背景和直觉各不相同,通读一遍以确定您是否感到舒适或超出您的能力范围可能是一个好主意。

请记住,您承担尝试此操作的所有风险,但您将获得回报!启动到您在家中构建的全新操作系统是非常令人满意的 :)。一旦您成为 Android 构建忍者,就不再需要等待任何人的“每夜构建”版本。您将掌握从代码构建完整操作系统并随时将其安装到运行设备上的技能。您接下来会做什么——也许您会添加一个功能、修复一个错误、添加一个翻译,或者利用您学到的知识构建一个新的应用程序或移植到新的设备——或者也许您再也不会构建——这一切都取决于您自己。

您需要的物品

一台小米 Max。

一台相对较新的 x86_64 计算机

Linux、macOS 或 Windows - 这些构建说明仅使用 Ubuntu 20.04 LTS 进行测试,因此我们建议使用该版本。

合理的 RAM 容量(构建到 lineage-17.1 需要 16 GB,lineage-18.1 及更高版本需要 32 GB 或更多)。您拥有的 RAM 越少,构建所需的时间就越长。启用 ZRAM 可能会有所帮助。

合理的存储空间(构建到 lineage-17.1 需要 200 GB,lineage-18.1 及更高版本需要 300 GB)。您可能需要更多可用空间来启用 ccache 或为多个设备构建。使用 SSD 比传统硬盘驱动器可以显著缩短构建时间。

良好的互联网连接和可靠的电力。:)

对基本的 Android 操作和术语有一定的了解。了解一些基本的命令行概念可能很有用,例如 cd,它代表“更改目录”,目录层次结构的概念,以及在 Linux 中它们由 / 分隔等等。

检查提示:如果您不习惯使用 Linux,这是一个极好的学习机会。它是免费的 – 只需下载并运行虚拟机 (VM),例如 VirtualBox,然后安装 Linux 发行版,例如 Ubuntu (AOSP 认可 Ubuntu)。任何最新的 64 位版本都应该可以很好地工作,但建议使用最新的长期支持 (LTS) 版本。有很多关于设置 VirtualBox 以运行 Ubuntu 的说明,所以我们将把这留给您。尽管值得注意的是,如果您已经使用 Linux 发行版或 macOS,您可以直接继续。

让我们开始吧!

构建 LineageOS

info_outline注意:您只需要执行这些步骤一次。如果您已经准备好构建环境并下载了源代码,请跳至 准备设备特定代码

安装平台工具

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

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

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

现在您必须将 adb 和 fastboot 添加到您的 PATH。打开 ~/.profile 并添加以下内容

# 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,您需要

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 lz4 libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

对于 Ubuntu 23.10 (mantic),请按如下方式从 23.04 (lunar) 安装 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

而对于低于 23.10 (mantic) 的 Ubuntu 版本,只需安装

lib32ncurses5-dev libncurses5 libncurses5-dev

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

libwxgtk3.0-dev

而对于低于 16.04 (xenial) 的 Ubuntu 版本,安装

libwxgtk2.8-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)

注意:对于构建这些版本,您需要从 /etc/java-8-openjdk/security/java.security 中的 jdk.tls.disabledAlgorithms 中删除 TLSv1 和 TLSv1.1。

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。我们推荐后者

使用 virtualenv --python=python2 ~/.lineage_venv 一次性生成 virtualenv。之后,在每个需要将 python2 作为默认版本的终端中,通过运行 ~/.lineage_venv/bin/activate 激活它。

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

创建目录

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

要创建它们

mkdir -p ~/bin

mkdir -p ~/android/lineage

~/bin 目录将包含 git-repo 工具(通常命名为“repo”),而 ~/android/lineage 目录将包含 LineageOS 的源代码。

安装 repo 命令

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

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

chmod a+x ~/bin/repo

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

在最新版本的 Ubuntu 中,~/bin 应该已经在您的 PATH 中。您可以通过使用文本编辑器打开 ~/.profile 并验证以下代码是否存在来检查这一点(如果缺少,请添加它)

# 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 身份

git config --global user.email "[email protected]"

git config --global user.name "Your Name"

由于它们的大小,某些仓库配置为 lfs 或 Large File Storage。为确保您的发行版为此做好准备,请运行

git lfs install

为避免在提交消息中重复 Change-Id: 尾部,尤其是在 cherry-picking 更改时,请使 Change-Id: 成为 git 的已知尾部

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

开启缓存以加速构建

如果您想通过运行 ccache 来加速后续构建,请使用 ccache

export USE_CCACHE=1

export CCACHE_EXEC=/usr/bin/ccache

并将该行添加到您的 ~/.bashrc 文件中。然后,通过输入以下内容来指定您希望 ccache 使用的最大磁盘空间量

ccache -M 50G

其中 50G 对应于 50GB 的缓存。这需要运行一次。25GB-100GB 的任何空间都将导致构建速度显着提高(例如,典型的 1 小时构建时间可以缩短到 20 分钟)。如果您仅为一个设备构建,则 25GB-50GB 就足够了。如果您计划为多个不共享相同内核源代码的设备构建,则目标为 75GB-100GB。此空间将永久占用您的驱动器,因此请考虑这一点。

您还可以启用可选的 ccache 压缩。虽然这可能会导致轻微的性能下降,但它增加了缓存中可以容纳的文件数量。要启用它,请运行

ccache -o compression=true

info_outline注意:如果启用压缩,则 ccache 大小可以更小(对于一个设备,目标约为 20GB)。

配置 jack

Jack 是当前用于构建 LineageOS 14.1 和 15.1 的 Java 工具链。已知如果配置不正确,它经常会耗尽内存 - 一个简单的修复方法是运行此命令

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"

将该命令添加到您的 ~/.bashrc 文件将自动配置 Jack 以分配足够的内存(在本例中为 4GB)。

初始化 LineageOS 源代码仓库

以下分支可用于为小米 Max 构建

cm-14.1

输入以下内容以初始化仓库

info_outline注意:确保您在此处输入的分支是您希望构建的分支!

cd ~/android/lineage

repo init -u https://github.com/LineageOS/android.git -b cm-14.1 --git-lfs --no-clone-bundle

下载源代码

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

repo sync

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

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

检查提示:repo sync 命令用于从 LineageOS 和 Google 更新最新的源代码。请记住它,因为您可能希望每隔几天执行一次以保持您的代码库新鲜和最新。但请注意,如果您进行任何更改,运行 repo sync 可能会擦除它们!

准备设备特定代码

源代码下载完成后,确保您位于源代码的根目录 (cd ~/android/lineage),然后键入

source build/envsetup.sh

breakfast hydrogen

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

警告重要提示:某些设备需要先填充 vendor 目录,然后 breakfast 才能成功。如果您在此处收到有关 vendor makefile 的错误,请跳至 提取专有 blobs。breakfast 的第一部分应该已成功,完成之后您可以重新运行 breakfast

提取专有 blobs

info_outline注意:此步骤需要设备已运行最新的 LineageOS,基于您希望构建的分支。如果您无法访问此类设备,请参阅从可安装的 zip 文件中提取专有 blobs。

现在确保您的小米 Max 通过 USB 数据线连接到您的计算机,已启用 ADB 和 root,并且您位于 ~/android/lineage/device/xiaomi/hydrogen 文件夹中。然后运行 extract-files.sh 或 extract-files.py 脚本

./extract-files.sh

或者,对于 Python 脚本

./extract-files.py

blobs 应该被拉取到 ~/android/lineage/vendor/xiaomi 文件夹中。如果您看到“command not found”错误,则可能需要将 adb 放置在 ~/bin 中。

开始构建

是时候开始构建了!现在,键入

croot

brunch hydrogen

构建应该开始。

检查提示:如果构建失败并出现类似 Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed. 的错误,请键入 export LC_ALL=C 并重新开始构建。

检查提示:想学习如何签署您自己的构建版本?请查看签署构建版本。

安装构建版本

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

cd $OUT

您将在那里找到创建的所有文件。更令人感兴趣的两个文件是

recovery.img,它是 LineageOS recovery 镜像。

lineage-14.1-20250408-UNOFFICIAL-hydrogen.zip,它是 LineageOS 安装程序包。

成功!那么… 接下来是什么?

您成功了!欢迎加入精英自构建者俱乐部。您从头开始,从底层构建了您的操作系统。您是您领域的主人/女主人… 并且希望您在此过程中学到了一些东西,也获得了一些乐趣。

获取帮助

#LineageOS-dev - Libera.Chat IRC 网络上一个有用的实时聊天室(或“频道”)。

相关推荐

Win10 Windows Defender添加信任文件的方法
bat365软件下载

Win10 Windows Defender添加信任文件的方法

📅 07-18 👁️ 1907
浏览器打开页面特别小 网页缩小了怎么放大
趣看365app下载

浏览器打开页面特别小 网页缩小了怎么放大

📅 07-03 👁️ 1322
壳牌hx3机油怎么样
365bet官网网投

壳牌hx3机油怎么样

📅 08-10 👁️ 7499