利用Github来编译TWRP

TWRP

哔哩哔哩

Q交流群

MediaTek综合交流:853152778

Qualcomm综合交流:703914635

Github地址

TWRP设备树生成:https://github.com/Tonyha7/build_twrp_device_tree

TWRP构建:https://github.com/azwhikaru/Action-TWRP-Builder

Orange Fox构建:https://github.com/azwhikaru/Action-OFRP-Builder

BoardConfig.mk

TW_EXTRA_LANGUAGES := true——添加更多国家的语言(包括亚洲语言)
TW_DEFAULT_LANGUAGE := zh_CN——设置默认语言为简体中文
BOARD_DISABLE_BOOT_VERIFY := true——关闭Boot校验

BOARD_HAS_NO_REAL_SDCARD:= true——禁用sdcard分区之类的东西,如果TWRP不适合于您的Recovery分区,可能会节省一些空间。

TW_NO_BATT_PERCENT:= true ——在不支持电池信息的设备上禁用电池百分比显示

TW_CUSTOM_POWER_BUTTON:= 107 ——自定义锁屏键所对应的设备按键

TW_NO_REBOOT_BOOTLOADER:= true ——从 reboot菜单中移除 reboot bootloader按钮

TW_NO_REBOOT_RECOVERY:= true ——从 reboot菜单中移除 reboot recovery按钮

RECOVERY_TOUCHSCREEN_SWAP_XY:= true——在X轴和Y轴之间交换触摸映射

RECOVERY_TOUCHSCREEN_FLIP_Y:= true——翻转触摸y轴的值

RECOVERY_TOUCHSCREEN_FLIP_X:= true——翻转触摸x轴的值

TWRP_EVENT_LOGGING:= true——启用触摸事件日志记录来帮助调试触摸屏问题(不要在发布时留下这个选项,它会很快填满你的日志文件)

BOARD_HAS_FLIPPED_SCREEN:= true——对于颠倒安装的屏幕,将屏幕上下翻转

TW_MAX_BRIGHTNESS := 255 # 设置最高亮度

TW_DEFAULT_BRIGHTNESS := 155 # 设置最低亮度

TW_IGNORE_MISC_WIPE_DATA := true # 是否在 wipe data 时忽略 misc

TW_INCLUDE_CRYPTO := true #是否添加加密支持

TARGET_CRYPTFS_HW_PATH := vendor/qcom/opensource/commonsys/cryptfs_hw # 解密所需依赖的源码路径

RECOVERY_SDCARD_ON_DATA := true # 设置内部存储的数据是否在 data 分区

TW_USE_TOOLBOX := true # 是否使用 ToolBox

TWRP_INCLUDE_LOgcAT := true # 是否启用 logcat

TARGET_USES_LOGD := true # 是否启用 logcat

recovery.fstab

将标志添加到fstab中列出的分区的末尾,用空格(或制表符)分隔。这些标志只影响该分区,而不影响其他分区。标志由分号分隔。如果你的路径显示名称(显示给用户的名称)有空格,则必须用引号将显示名称括起来。例子如下:

/external_sd vfat /dev/block/mmcblk1p1 flags=display="Micro SDcard";storage;wipeingui;removable

这个分区的标志给它一个显示名称为“Micro SDcard”以显示给用户。wipeingui使此分区可在高级清除菜单(Advanced Wipe Menu)中进行擦除。removable标志表示有时该分区可能不存在,以防止在启动期间显示挂载错误。下面是一个完整的标志列表:

removable——指示分区可能不存在,以防止在boot期间显示挂载错误。

storage——指示分区可以用作存储,这使得分区可以作为存储器用于备份、恢复、zip安装等。

settingsstorage——正常情况下应该只设置一个分区作为 settingsstorage,这个分区用作存储TWRP的设置文件的位置。

canbewiped——表示分区可以由后端系统擦除,但可能不会在GUI中列出供用户擦除的选项。

userrmrf——覆盖擦除所用的常规磁盘格式,并且只允许使用 rm -rf命令擦除分区。

backup=——backup=1backup=0, 1表示分区可以列出在备份/恢复列表中,而 backup=0确保该分区不会出现在备份列表中。

wipeingui——使分区显示在GUI中,允许用户在高级擦除菜单中选择擦除。

wipeduringfactoryreset——分区将在恢复出厂设置期间被清除。

ignoreblkid——blkid用来确定TWRP正在使用什么文件系统,这个标志将导致TWRP跳过/忽略blkid的结果,只使用fstab中指定的文件系统。

retainlayoutversion——使TWRP在索尼Xperia S等设备的 /data中保留 .layoutversion文件,这些设备使用 /data/media,但仍然有一个单独的 /sdcard分区

symlink=——导致TWRP在挂载分区时可以运行额外的挂载命令,通常与 /data/media一起使用,以创建 /sdcard

display=——为在GUI中列出的分区设置其要显示的名称。

storagename=——为要在GUI的storage(存储)列表中列出的分区设置名称。

backupname=——为GUI备份/恢复列表中列出的分区设置一个备份名称。

length=——通常用于在 /data分区末端预留空白空间,用于存储解密密钥。当Android的完整设备加密启用时,不设置这个可能导致无法加密设备。

canencryptbackup=——设置为1或0以启用/禁用,使TWRP加密该分区的备份,如果用户选择加密(只适用于tar备份,不适用于img镜像)

userdataencryptbackup=——设置为1或0以启用/禁用,使TWRP只加密该分区的userdata部分,某些子文件夹如 /data/app将不会被加密,以节省时间。

subpartitionof=——等号后面加上子分区的分区路径。子分区被视为主分区的“一部分”,例如TWRP自动使 /datadata成为 /data的子分区。这意味着 /datadata将不会出现在GUI条目中,但在对 /data执行这些操作时,/datadata也同时会被清除、备份、恢复、装载和卸载。

Bug修复

屏幕反向,触摸却是正向的?

BoardConfig.mk 中加入 BOARD_HAS_FLIPPED_SCREEN:= true 这行代码即可解决

屏幕反的,触摸也是反的?

RECOVERY_TOUCHSCREEN_SWAP_XY:= true——在X轴和Y轴之间交换触摸映射

RECOVERY_TOUCHSCREEN_FLIP_Y:= true——翻转触摸y轴的值

RECOVERY_TOUCHSCREEN_FLIP_X:= true——翻转触摸x轴的值

刷入TWRP,进入却不能触摸?

使用Fastboot引导进入

有些手机限制了引导加载程序,进入rec模式不能触摸,只有按键可以用,这种情况一般会发生在只有使用按键进行选择的rec

比如:金立M6 Plus

又或者没有触摸驱动

vivo的oled屏幕没有触摸,例如:vivo y7s

常见编译问题

无法克隆设备树

将仓库设置为公开

构建过程错误

解决方法:

其他

Razer Phone TWRP 适配心得 - 哔哩哔哩 (bilibili.com)

翻译:【XDA论坛】教程:如何手动编译TWRP Recovery - 知乎 (zhihu.com)

【刷机】首发安卓TWRP和Magisk集成到Boot分区视频教学_哔哩哔哩_bilibili

出厂安卓11的机型之VAB架构的详细分析 来自 Rannki - 酷安 (coolapk.com)