在正式开始编译工作之前,我们需要进行以下准备
为了构建 ArbitrarilyTong | 任意桐,需要安装一些软件包。
对于 Ubuntu
:
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-gtk3-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
对于 ArchLinux
:
yay -S aosp-devel lineageos-devel
对于其他发行版,请自行查找相关软件包。
Repo 是由 Google 提供的一个工具,可以简化在 Android 源代码环境中使用 Git 的过程。
在所有发行版中,可以通过以下命令行获取 repo
:
# 创建一个存放 Repo 的目录,并将其添加到路径中
mkdir ~/bin
PATH=~/bin:$PATH
# 下载 Repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# 给 Repo 添加可执行权限
chmod a+x ~/bin/repo
对于 ArchLinux
,您也可以通过 yay
安装:
yay -S repo
以下分支可用于构建:
- ArbitrarilyTong-13.0(基于 LineageOS)
输入以下命令以初始化代码仓库:
# 创建一个用于存放源文件的目录
# 可以选择任意位置(只要文件系统区分大小写)
mkdir ArbitrarilyTong
cd ArbitrarilyTong
# 启用 Git LFS 功能
git lfs install
# 在创建的目录中安装 Repo
repo init -u https://github.com/ArbitrarilyTong/android_tong.git -b ArbitrarilyTong-13.0 --git-lfs
在每次需要拉取上游更改时,执行以下操作。请注意,首次运行需要一些时间,因为它将下载所有所需的 Android 源代码文件及其更改历史。
# 让 Repo 处理所有繁重的工作
repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
# 如果需要查看错误日志,可以使用 -v 选项
# repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags -v
以下设备代号可用于构建:
- thyme(小米10S)
输入以下命令以初始化仓库:
# 运行以准备设备列表
source build/envsetup.sh
# ... 现在运行
lunch lineage_devicecodename-buildtype
如果希望通过运行以下命令加快后续的构建速度,可以使用 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
现在是开始构建的时候了!输入:
croot
mka bacon -j$(nproc --all)
构建将开始。
假设构建没有错误(构建完成时会显而易见),在构建运行的终端窗口中键入以下命令:
cd $OUT
这里将找到所有创建的文件。其中比较重要的两个文件是:
boot.img
,引导映像,包含恢复-ramdisk。- 以
ArbitrarilyTong-
开头的 zip 文件,是 ArbitrarilyTong 安装程序包。