简介

此处为汇总一些常见的问题,可以使用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

https://github.com/momo54181/android_device_alldocube_T1030M/commit/f4bab9d5488d98601eb76eda9fb1b27f7eb2e8f1

无法克隆设备树

将仓库设置为公开

构建过程错误

解决方法:

1
2
# Inherit some common TWRP stuff.
$(call inherit-product, vendor/twrp/config/common.mk)

替换成上面这个

安卓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
2
device/alps/ls12_mt8797_wifi_64/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete.
See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL

编译 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

  1. 进入手机/system/build.prop

  2. 编辑 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)。