Home » IT » Redmi Note 10 Pro 5G (chopin) 在 macOS 上编译 TWRP 的详细指南文档

Redmi Note 10 Pro 5G (chopin) 在 macOS 上编译 TWRP 的详细指南文档

编 辑:Y ┊ 时 间:2025年06月23日 ┊ 访问: 19 次

Redmi Note 10 Pro 5G (chopin) 在 macOS 上编译 TWRP 的详细指南文档

这份文档将涵盖从环境搭建到最终编译刷入的所有关键步骤,并着重强调如何利用你已有的线刷包数据。


Redmi Note 10 Pro 5G (chopin) 在 macOS 上编译 TWRP 完整指南

本文档旨在为 Redmi Note 10 Pro 5G (代号 chopin,搭载 MTK 处理器) 用户提供一份在 macOS 系统上编译和适配 TWRP (Team Win Recovery Project) 的详细指南。你将学会如何利用手机线刷包中的关键数据,定制一份兼容 Android 13 系统的 TWRP Recovery。


一、编译前置准备

编译 Android 项目需要稳定的环境和充足的资源。

1.1 硬件与系统要求

  • 操作系统: macOS (推荐 Ventura 或 Sonoma 等较新版本)。
  • 处理器: Intel 或 Apple Silicon (M系列芯片均可)。
  • 内存 (RAM): 推荐 16GB 及以上 (32GB 或更高更佳)。编译过程非常耗内存。
  • 硬盘空间: 至少 150GB 以上的可用空间 (强烈推荐 SSD 固态硬盘,能大幅提升编译速度)。
  • 网络: 稳定、高速的网络连接,用于下载大量源代码。

1.2 准备 macOS 开发环境

打开你的 终端 (Terminal.app),执行以下命令:

a. 安装 Xcode Command Line Tools

这是 macOS 开发的基础。

xcode-select --install

按照弹窗提示点击“安装”。

b. 安装 Homebrew

macOS 上的包管理器,用于安装后续工具。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后,根据终端提示执行 brew doctorbrew shellenv

c. 安装编译工具和依赖

使用 Homebrew 安装 Java 开发工具包 (JDK) 和其他必要的编译工具。

brew install git adb fastboot openjdk@11 python make autoconf automake libtool pkg-config bison flex gmp gawk libusb readline coreutils
  • openjdk@11:推荐安装 OpenJDK 11,如果后续编译出现问题,可以尝试切换到 OpenJDK 8 (brew install openjdk@8)。
  • coreutils:提供 GNU 版本的核心工具,以避免 macOS 原生工具的兼容性问题。

配置 JDK 环境变量:

echo 'export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc # 如果你使用 zsh
echo 'export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH"' >> ~/.bash_profile # 如果你使用 bash
source ~/.zshrc # 或者 source ~/.bash_profile

d. 安装 Repo 工具

Google 开发的用于管理多个 Git 仓库的工具。

mkdir -p ~/bin # -p 参数确保父目录也一并创建
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

e. 配置 Git 信息

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

请替换为你自己的信息。

1.3 获取手机线刷包

确保你已下载 Redmi Note 10 Pro 5G (chopin) 对应你手机当前 Android 13 版本的官方线刷包 (Fastboot ROM)


二、从线刷包中提取关键数据

线刷包是编译 TWRP 最可靠的数据源。我们将从中提取 boot.imgvendor.img,并进一步解包。

2.1 解压线刷包

将下载好的 .tgz.zip 格式的线刷包解压到电脑上一个你容易找到的文件夹。

tar -xf <你的线刷包文件名>.tgz   # 如果是 .tgz 格式
unzip <你的线刷包文件名>.zip # 如果是 .zip 格式

解压后,找到里面的 boot.imgvendor.img 文件,将它们复制到一个单独的工作目录,例如 ~/Downloads/chopin_firmware_extracted

2.2 解包 boot.img (获取内核和 Ramdisk)

boot.img 包含设备的核心内核和初始启动 Ramdisk。

工具:Android Image Kitchen (AIK)

  1. 下载 AIK: 访问 osm0sis/Android-Image-Kitchen 的 GitHub 仓库 (https://github.com/osm0sis/Android-Image-Kitchen)。在右侧的 "Releases" 区域下载最新版本的压缩包 (例如 Android_Image_Kitchen_VXXX.zip)。
  2. 解压 AIK: 将下载的 .zip 文件解压到你电脑上一个方便操作的文件夹,例如 ~/Documents/AIK
  3. 解包 boot.img

    • 将你线刷包里的 boot.img 文件复制到 ~/Documents/AIK 目录下。
    • 打开终端,进入 AIK 目录:

      cd ~/Documents/AIK
    • 执行解包脚本:

      ./unpackimg.sh boot.img
    • 成功后,AIK 会生成 split_imgramdisk 两个文件夹。

关键数据 (boot.img 解包后):

  • ramdisk/ 目录下的内容:

    • fstab.chopin (或类似名称的 fstab 文件): 这是最关键的数据! 它详细定义了手机所有分区(如 /system, /vendor, /data 等)的设备路径、文件系统类型、挂载点和挂载选项。在后续配置 TWRP 设备树时,你需要完全参考这个文件来确保分区信息的准确性。
    • sepolicy 文件 (位于 ramdisk/sepolicyramdisk/etc/selinux/):SELinux 策略文件,用于调试权限问题。
    • init.rc 和各种 init.*.rc 文件:启动脚本,可供参考。
  • split_img/ 目录下的内核文件:

    • boot.img-zImage (或类似名称):这是设备的 Linux 内核二进制文件。你可以将其作为编译 TWRP 内核的参考。

2.3 解包 vendor.img (获取 Vendor 专有文件)

vendor.img 包含设备厂商的专有驱动和库文件,对 TWRP 的正常运行至关重要。

工具:simg2img 和 macOS 磁盘工具

  1. 安装 simg2img

    brew install simg2img
  2. 转换 vendor.img 将线刷包中的 vendor.img 复制到工作目录 (例如 ~/Downloads/chopin_firmware_extracted)。

    simg2img ~/Downloads/chopin_firmware_extracted/vendor.img ~/Downloads/chopin_firmware_extracted/vendor.raw.img

    这会生成一个名为 vendor.raw.img 的普通镜像文件。

  3. 挂载 vendor.raw.img

    • 在 macOS Finder 中,双击 vendor.raw.img 文件。macOS 会尝试将其挂载为一个虚拟磁盘。
    • 成功后,Finder 中会出现一个新的磁盘图标 (通常名为 vendorMIUI-Vendor)。

关键数据 (vendor.img 解包后):

  • 挂载后的 vendor 磁盘中的所有文件: 这些是设备厂商的专有库文件和驱动 (Vendor Blobs)。你需要根据 TWRP 设备树中 proprietary-files.txt 文件列出的清单,将所需的文件从这里复制到你的 TWRP 源码中。这些文件对于触摸屏、显示、传感器,以及最重要的数据分区解密等功能的正常运作至关重要。

三、获取 TWRP 源码和设备适配代码

3.1 创建工作目录并同步 TWRP 源码

  1. 在终端中创建你的 TWRP 项目工作目录:

    mkdir ~/android/twrp
    cd ~/android/twrp
  2. 初始化并同步 TWRP 源码。由于目标是 Android 13,选择 twrp-10.0 作为起始分支 (TWRP 对 Android 13 的支持通常从这个分支开始)。

    repo init -u https://github.com/minimal-manifest-twrp/platform_manifest.git -b twrp-10.0
    repo sync -j$(sysctl -n hw.ncpu) # 在 macOS 上获取CPU核心数

3.2 获取设备树 (device/xiaomi/chopin)

设备树是定制 TWRP 的核心,需要针对 chopin 精心适配。

  1. 克隆设备树仓库: 基于之前的研究,YuyukoAOSPMod/device_xiaomi_chopin 是一个非常有潜力的仓库。

    git clone https://github.com/YuyukoAOSPMod/device_xiaomi_chopin.git device/xiaomi/chopin
  2. 检查和切换分支: 进入 device/xiaomi/chopin 目录,查看 README.mdBoardConfig.mk 文件。特别注意是否有明确支持 Android 13 的分支 (如 twrp-13.0android-13lineage-20.0 或更高版本)。如果有,切换到该分支:

    cd device/xiaomi/chopin
    git checkout <对应的Android 13分支或tag> # 例如 git checkout twrp-13.0
    cd ../../ # 返回到 ~/android/twrp 根目录

3.3 获取内核源码 (kernel/xiaomi/chopin)

TWRP 需要为你设备的处理器编译一个兼容的 Linux 内核。

  1. 克隆内核源码仓库: ChopinKernels/kernel_xiaomi_chopin_android_S 是一个较好的起点,虽然名字是 Android 12,但它针对 MIUI 13,更接近 Android 13。

    git clone https://github.com/ChopinKernels/kernel_xiaomi_chopin_android_S.git kernel/xiaomi/chopin
  2. 检查和切换分支: 同样,进入内核源码目录,查看是否有更匹配 Android 13 的分支。

四、应用关键数据并配置 TWRP

现在是时候将之前提取到的关键数据整合到你的 TWRP 源码中了。

4.1 更新设备树配置 (BoardConfig.mk)

这是最关键的一步!

  1. 打开 device/xiaomi/chopin/BoardConfig.mk 文件 (或它所包含的分区定义文件)。
  2. 对照你从 boot.img 解包得到的 ramdisk/fstab.chopin 文件

    • 确保所有分区信息匹配: 包括分区的设备节点 (e.g., /dev/block/by-name/system)、文件系统类型 (ext4, f2fs)、挂载点 (/system, /vendor, /data) 和挂载选项。
    • 检查 Super Partition (超级分区) 相关配置:如果你的设备使用 Super Partition,确保 BOARD_SUPER_PARTITION_SIZEBOARD_SUPER_PARTITION_GROUPS 等参数在 BoardConfig.mk 中正确配置,并且与你设备的实际分区布局一致。
    • 小米设备通常比较复杂,你可能需要仔细比对 fstab.chopinBoardConfig.mk 中的每一行,确保它们准确无误。

4.2 放置 Vendor 专有文件 (Vendor Blobs)

这些文件是 TWRP 能够驱动硬件的关键。

  1. 查找 proprietary-files.txt 在你的设备树目录 device/xiaomi/chopin/ 下,找到 proprietary-files.txt 文件。这个文件列出了所有需要的 Vendor 文件及其在原始 vendor 分区中的路径。
  2. 创建 Vendor 目标目录: 根据 proprietary-files.txt 或设备树的编译脚本要求,在 TWRP 源码的根目录下创建存放 Vendor 文件的目录。通常是:

    mkdir -p vendor/xiaomi/chopin/proprietary
  3. 复制 Vendor Blobs: 手动 或通过脚本将 proprietary-files.txt 中列出的所有文件,从你挂载的 vendor.raw.img 磁盘中,复制到你刚刚在 TWRP 源码中创建的 vendor/xiaomi/chopin/proprietary 目录下。

    • 示例: 如果 proprietary-files.txt 中有一行 vendor/lib/libbinder.so,你就需要从挂载的 vendor 磁盘的 /lib/libbinder.so 路径复制到你的 vendor/xiaomi/chopin/proprietary/lib/libbinder.so
    • 注意: 确保目录结构与 proprietary-files.txt 中指定的相对路径保持一致。

五、编译 TWRP Recovery

所有准备工作和数据应用完成后,就可以开始编译了。

  1. 进入 TWRP 源码根目录:

    cd ~/android/twrp
  2. 设置编译环境并选择目标设备:

    . build/envsetup.sh
    lunch omni_chopin-eng # 或 omni_chopin-userdebug。`omni_` 是 TWRP 项目的通用前缀。
  3. 开始编译:

    mka recoveryimage
    • 这个过程会持续较长时间,请耐心等待。
    • 如果遇到编译错误,请仔细阅读终端输出的错误信息。通常是缺少依赖、代码不兼容、或者设备树配置有误。

六、刷入和测试

编译成功后,你会得到一个 twrp.img 文件,通常位于 out/target/product/chopin/ 目录下。

  1. 进入 Fastboot 模式: 确保你的手机已解锁 Bootloader。关机状态下,同时按住 音量下键 + 电源键,直到进入 Fastboot 界面。
  2. 连接手机到电脑: 使用 USB 数据线连接手机和电脑。
  3. 临时启动 TWRP (强烈推荐先测试):

    fastboot boot <twrp.img 文件的完整路径> # 例如:fastboot boot out/target/product/chopin/recovery.img
    • 这样 TWRP 会临时启动而不会永久写入你的手机。如果 TWRP 能正常启动、触摸屏可用、能识别分区,说明编译基本成功。
    • 如果出现黑屏、卡顿或重启,说明需要调试。
  4. 刷入 TWRP (如果临时启动正常):

    fastboot flash recovery <twrp.img 文件的完整路径>
    • 注意: 小米手机通常有 Anti-rollback (防回滚) 机制。刷入第三方 Recovery 需谨慎,确保你编译的 TWRP 是为你当前 ROM 版本设计的,否则有潜在的变砖风险。

七、常见问题与调试

  • 编译错误:

    • 依赖缺失: 检查第一步的环境准备,确保所有 Homebrew 包都已安装。
    • Java 版本问题: 尝试切换 OpenJDK 8 或 11。
    • 代码不兼容: TWRP 源码、设备树、内核源码的版本不匹配。需要仔细检查 GitHub 仓库的分支和提交历史,寻找兼容性提示。
    • 内存不足: 增加 RAM 或创建 Swap 文件。
  • TWRP 无法启动/黑屏/卡在 Logo:

    • 内核问题: 编译的内核与设备不兼容。需要检查内核源码和其编译配置。
    • 设备树问题: BoardConfig.mk 中的分区路径、硬件驱动、Ramdisk 配置等有误。这是最常见的导致无法启动的原因。
  • 触摸屏无反应 / 功能缺失:

    • 通常是 Vendor Blobs 缺少关键驱动,或者设备树中触摸屏相关的配置有误。确保你复制了 proprietary-files.txt 中所有必要的文件。
  • 无法解密数据分区:

    • Android 10 之后的 FBE (File-Based Encryption) 机制较复杂。需要确保 Vendor Blobs 包含所有解密所需的库,并且 TWRP 源码也适配了该设备的加密方案。

总结

编译 TWRP 是一项复杂而需要耐心的工作。但通过这份指南,你拥有了完整的流程和关键数据来源。即使第一次尝试可能不会完美成功,但每次失败都将是你学习和排错的机会。多查阅 XDA 开发者论坛中 Redmi Note 10 Pro 5G (chopin) 的专区,那里会有很多宝贵的经验和信息。




Copyright © 2026 Y 版权所有.网站运行:13年238天19小时33分