该章节将引导你从源码构建TWRP Recovery
注意:本教程以TWRP-12.1与qti Lahaina for arm64为例
部署环境
1. 硬件方面的选择
对于TWRP,除非你的电脑拥有较高的配置,我们一般建议你在实体机编译,以下为针对TWRP-12.1的推荐配置。
磁盘空间 | 内存 |
40GB+ | 16GB+ |
2. 选择合适的操作系统
请使用64位的Linux发行版,推荐使用Ubuntu 22.04 LTS
Ubuntu安装教程: https://ubuntu.com/tutorials/install-ubuntu-desktop
Archlinux安装教程:https://wiki.archlinux.org/title/Installation_guide
(也可使用WSL:https://learn.microsoft.com/zh-cn/windows/wsl/install )
3. 安装依赖项目
对于 Ubuntu 22.04 LTS等Debian系发行版,执行以下命令
sudo apt update sudo apt upgrade 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 libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
对于Archlinux, 你可以从AUR安装lineageos-devel
4. 获取repo工具
在国内我们使用清华源,执行以下命令
mkdir ~/bin export PATH=~/bin:$PATH cd ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo cd ~
5. 设置邮箱和用户名
此步骤只需要重复一次
git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com"
下载源代码
1. 镜像源的配置
建议先设置从清华源更新repo工具,并配置git从清华源拉取AOSP源码
git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2. 获取主要源代码
这里下载的是twrp-12.1的源代码,请灵活操作
- 小技巧:使用
--depth=1
可以有效节省流量和加快拉取速度!
mkdir ~/twrp cd ~/twrp repo init --depth=1 -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1 repo sync --force-sync
3. 获取设备配置
再克隆设备树(dt)
- 这里我们克隆qti Lahaina for arm64的配置,注意一般的设备树(可能有例外)命名方式为device_manufacture_codename, 克隆目录为device/manufacture/codename(如OnePlus6T的设备树一般命名为device_oneplus_fajita, 克隆到device/oneplus/fajita下)
- 也有一部分设备会有common tree (如ASUS ZenFone 8 的依赖: https://github.com/TeamWin/android_device_asus_sm8350-common)
git clone --depth=1 -b twrp-12.1 https://github.com/QRD-Development/twrp_device_qcom_lahaina.git device/qcom/lahaina
编译
1. 初始化编译环境
. build/envsetup.sh
2. 启动编译
- 对于演示设备qti Lahaina for arm64(codename: lahaina), 我们选择
bootimage
作为构建目标
lunch twrp_lahaina-eng mka bootimage
- 构建目标有多种,主要由设备本身配置方式[1]决定
- 主要的构建目标(此处已经涵盖多种情况,但撰写者仍可能会有疏漏,请灵活判断)
- Recovery partition:
mka recoveryimage
- 多用于含有recovery分区的设备
- Boot image ramdisk:
mka bootimage
- 不含recovery分区的a/b设备,且boot header version一般小于等于3,同时recovery resource不在vendor ramdisk内
- Vendor_boot image ramdisk:
mka vendorbootimage
- 不含recovery分区的a/b设备,且boot header version一般大于等于3;对于boot header version为4的设备,最好使用modular recovery ramdisk(刷写示例)
- Recovery partition:
测试
使用合适的方式将TWRP安装到你的设备上!