
TWRP编译及设备树报错解决合集
简介
此处为汇总一些常见的问题,可以使用Crtl+F进行关键字查询,回答有人工和AI回答。
TWRP编译
如果要构建vendor_boot构建标识BUILD_TARGET
将recovery改为vendorboot
安卓10以上编译报错
In file included from build/make/target/product/telephony_vendor.mk:24:
device/alldocube/T1030M/device.mk:24: **error: **PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See
解决方法:omni_device.mk或twrp_device.mk中的full_base_telephony.mk改为aosp_base.mk
无法克隆设备树
将仓库设置为公开
构建过程错误
解决方法:
1 | # Inherit some common TWRP stuff. |
替换成上面这个
安卓10编译报错
设备树生成器的问题
TARGET_SCREEN_DENSITY := 480
将480改为320
解决 TWRP 编译时报错 PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete
全流程
适用场景:基于 AOSP / Lineage / Omni 源码编译 TWRP(或其他 Recovery)时,出现
error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead.
一、背景简介
在较新的 Android 构建系统(Android 11 及之后)中,Google 移除了 PRODUCT_STATIC_BOOT_CONTROL_HAL
这一变量,改用 共享库(shared library)方式来管理 Boot Control HAL。
如果你的设备配置 (device.mk
) 里仍然写着这行,就会导致整个编译流程直接失败并抛出上述错误。
二、问题定位
编译日志中的关键提示(示例):
1 | device/alps/ls12_mt8797_wifi_64/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. |
编译 TWRP 时提示 Device ossi not found
的原因与解决方案
在编译 Recovery时,个别人会遇到如下报错信息:
1 | Device ossi not found. Attempting to retrieve device repository from TeamWin Github (http://github.com/TeamWin). |
在TeamWin Github中没有找到设备树,看是否是设备名称填写错误。
设备树编译
设备树创建时报错 Property ro.product.first_api_level could not be found in build.prop
的原因与解决方案
1. 问题描述
网友 @yunzimo 在使用设备树自动生成工具(如 sebaubuntu_libs)时遇到如下错误:
self.first_api_level = self.get_first_prop(FIRST_API_LEVEL)
File “/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/site-packages/sebaubuntu_libs/libandroid/device_info.py”, line 179, in get_first_prop
raise AssertionError(f’Property {props[0]} could not be found in build.prop’)
AssertionError: Property ro.product.first_api_level could not be found in build.prop
该错误反复在多个仓库尝试中出现,怀疑是否和 recovery 镜像有关。
2. 问题分析
build.prop
是 Android 系统中的一个重要配置文件,存放系统属性。ro.product.first_api_level
属性表示设备首次发布的 Android API 级别。- 该属性缺失,导致设备树生成工具无法正确识别设备 Android 版本信息。
出现这个问题的常见原因是:
- 设备采用了 VAB(Virtual A/B)或传统 A/B 分区布局,系统分区被拆分,直接从 recovery 镜像中无法获取完整的
build.prop
。 build.prop
文件不完整或缺失,尤其是在 recovery 镜像中通常不包含完整的 system 分区内容。
3. 解决方案
手动解包并补充 build.prop
进入手机/system/build.prop
编辑
build.prop
文件查看ro.product.first_api_level后面的值在rec文件的
build.prop
中添加缺失的属性:ro.product.first_api_level=29
这里的
29
是 Android 10 的 API 级别,根据实际设备版本填写(Android 11 是 30,Android 12 是 31/32,Android 13 是 33)。
- 感谢您的赞赏