设备树的ify
在试图为不被官方支持的设备编译ROM(大多数情况下)时,需要自行寻找设备树相关文件。通常多数设备可以在GitHub找到前人的工作(手搓设备树这事不在本文讨论范围内,会搓设备树的dalao也不用看这两篇教程),通常是以android_device_<设备品牌>_<设备代号>
命名的仓库。(图片中是小米6X的设备树,仅举例)
不同的类原生ROM通常有不同的定义,因而这些前人的劳动成果可能与你要编译的ROM并不适配,表现为启动编译的过程中各种报错找不到Makefile配置文件定义的模块,这时候就需要修改设备树中的相关Makefile文件以适配当前编译的ROM,这一过程被称为设备树的“ify”过程。
还是以小米6X的设备树为例,原来的设备树适用于PixelExperience,但我想要编译LineageOS,此时就需要对一些文件进行修改。本例中通常需要更改AndroidProduct.mk
和aosp_wayne.mk
的内容,使之与LineageOS相匹配。修改的目标内容视不同ROM而定,建议参考你要编译的ROM官方支持的设备所公开的设备树。
常见的构建类型及其区别
构建类型 | 特性 |
---|---|
eng | 具有额外调试工具的开发配置,默认开放完整的adb调试权限而无需授权,通常在调试设备树时建议使用eng构建 |
userdebug | 与“user ”类似,但具有 root 权限(通过adb root 获取)和调试功能;是首选编译类型 |
user | 权限受限;适用于生产环境,使用adb无法获取root权限,官方系统通常是user 构建 |
此外,不同构建类型下构建软件包的配置也会有所不同。
在使用brunch
命令直接启动编译流程或使用lunch
命令设定编译配置时可以指定构建类型。
以为Redmi K50(rubens
)构建LineageOS 21(基于Android 14 QPR3)为例:
命令:brunch lineage_rubens-ap2a-eng
其中lineage_rubens
——设备名称ap2a
——构建版本eng
——指定构建类型为eng
最后一次更新于2024-08-15
0 条评论