如何从源码构建 TWRP Recovery:修订间差异

来自Uotan Wiki · 刷机百科
(创建页面,内容为“== 该章节将引导你从源码构建TWRP Recovery == 注意:本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例 === 部署环境 === # '''硬件方面的选择''' 对于''TWRP'',除非你的电脑拥有较高的配置,我们一般建议你在实体机编译,以下为针对''TWRP-12.1''的推荐配置。 <div align=center> <table> <tr align=center> <td>磁盘空间</td> <td>内存</td> </tr> <tr align=center> <td>40GB+</td>…”)
 
无编辑摘要
 
(未显示2个用户的6个中间版本)
第2行: 第2行:
注意:本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例
注意:本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例
=== 部署环境 ===
=== 部署环境 ===
# '''硬件方面的选择'''
==== 1. 硬件方面的选择 ====
对于''TWRP'',除非你的电脑拥有较高的配置,我们一般建议你在实体机编译,以下为针对''TWRP-12.1''的推荐配置。
对于''TWRP'',除非你的电脑拥有较高的配置,我们一般建议你在实体机编译,以下为针对''TWRP-12.1''的推荐配置。
<div align=center>
<table>
  <tr align=center>
    <td>磁盘空间</td>
    <td>内存</td>
  </tr>
  <tr align=center>
    <td>40GB+</td>
    <td>16GB+</td>
  </tr>
</table>
</div>
# '''选择合适的操作系统'''
* 使用64位的Linux发行版,推荐使用Ubuntu 22.04 LTS


```
  <div align=center>
sudo apt update
  <table>
sudo apt upgrade
    <tr align=center>
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
      <td>磁盘空间</td>
```
      <td>内存</td>
对于Archlinux, 你可以从AUR安装`lineageos-devel`
    </tr>
    <tr align=center>
      <td>40GB+</td>
      <td>16GB+</td>
    </tr>
  </table>
  </div>
 
==== 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'''安装<code>lineageos-devel</code>
 
==== 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的源代码,请灵活操作
* 小技巧:使用<code>--depth=1</code>可以有效节省流量和加快拉取速度!
 
  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), 我们选择<code>bootimage</code>作为构建目标
 
  lunch twrp_lahaina-eng
  mka bootimage
 
* 构建目标有多种,主要由设备本身配置方式<ref>https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp</ref>决定
* 主要的构建目标(此处已经涵盖多种情况,但撰写者仍可能会有疏漏,请灵活判断)
** Recovery partition:<code>mka recoveryimage</code>
*** 多用于含有recovery分区的设备
** Boot image ramdisk: <code>mka bootimage</code>
*** 不含recovery分区的a/b设备,且boot header version一般小于等于3,同时recovery resource不在vendor ramdisk内
** Vendor_boot image ramdisk: <code>mka vendorbootimage</code>
*** 不含recovery分区的a/b设备,且boot header version一般大于等于3;对于boot header version为4的设备,最好使用modular recovery ramdisk[https://github.com/QRD-Development/twrp%20device%20qcom%20lahaina/tree/twrp-12.1-for-boot-header-v4?tab=readme-ov-file (刷写示例)]
 
=== 测试 ===
使用合适的方式将TWRP安装到你的设备上!

2024年2月14日 (三) 18:10的最新版本

该章节将引导你从源码构建TWRP Recovery

注意:本教程以TWRP-12.1qti 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(刷写示例)

测试

使用合适的方式将TWRP安装到你的设备上!