打开/关闭搜索
搜索
打开/关闭菜单
通知
打开/关闭个人菜单
查看“为新设备编写类原生device tree”的源代码
来自Uotan Wiki · 刷机百科
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
为新设备编写类原生device tree
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 为新设备编写类原生device tree == === 本页以lineageOS为例,编写设备树,根据您设备的安卓版本同步对应的lineage版本源代码进行编译,本文不涉及跨版本,请知悉。 === === 准备工作 === * '''系统环境需求''': ** 运行Linux发行版的物理机/虚拟机(推荐Ubuntu 22.04或更新版本) ** 或Windows Subsystem for Linux (WSL1/WSL2均可) * '''必要文件准备''': ** 设备原厂完整固件包(需未经过任何修改的官方版本,最新版本优先) ** 存储空间建议预留至少50GB可用空间 === 固件解包流程 === 1. 使用归档工具处理固件包(示例): <pre> # 使用7-zip进行循环解压直至获取镜像文件 7z x firmware.zip -oextracted_folder # 重复操作直到得到以下关键镜像: # - system.img/system.new.dat.br # - vendor.img/vendor.new.dat.br # - boot.img # - dtbo.img(如果存在) </pre> 或使用如DNA,TIK这种专门的解包工具。 === 设备树生成步骤 === 推荐使用Python 3.8+环境 1. 安装必要依赖: <pre style="background:#f8f9fa;padding:1em"> sudo apt update && sudo apt full-upgrade -y sudo apt install python3 python3-pip git-lfs libxml2-utils pip3 install aospdtgen </pre> 2. 目录结构准备: <pre> mkdir -p ~/aosp/{system,vendor,pruodct} # 创建标准化目录结构(必要时可添加product) # 将解包后的文件按类型存放: # - system/ 存放system.img解包内容 # - vendor/ 存放vendor.img解包内容 # - product/ 可选项 # - boot.img 存放boot.img等启动镜像 </pre> 3. 生成设备树: <pre> python3 -m aospdtgen ~/aosp ~/device_tree </pre> === 供应商树生成指南 === 1. 整合到LineageOS源码: <pre> # 假设源码目录为~/android/lineage mv ~/device_tree/* ~/android/lineage/device cp vendor.img ~/android/lineage/device/manufacturer/codename/ </pre> 2. 执行供应商文件提取: <pre> cd ~/android/lineage/device/<manufacturer>/<codename> ./extract-files.sh vendor.img </pre> '''如果报错,请将vendor.img挂载''' === 挂载vendor.img的完整流程 === 当出现"Vendor partition not found"或"Missing vendor blobs"错误时,可手动挂载vendor.img进行调试: ==== 准备工作 ==== 1. 安装必要工具: <pre> sudo apt install android-sdk-libsparse-utils e2fsprogs fuse2fs </pre> 2. 创建挂载点目录: <pre> mkdir -p ~/mnt/vendor </pre> 3.挂载镜像: <pre> sudo mount -o ro,loop,noatime vendor.img ~/mnt/vendor </pre> 4.生成供应商树: <pre> ./extract-files.sh ~/mnt/vendor </pre> 5.解除挂载: <pre> sudo umount ~/mnt/vendor </pre> 完成后检查vendor/<manufacturer>/<codename>目录结构 默认情况下,供应商树将自动生成在源码目录下的vendor文件夹中 === 后期验证与调试 === * 基础结构验证: <pre> tree -L 3 device/manufacturer/codename # 应包含: # ├── Android.bp # ├── AndroidProducts.mk # ├── BoardConfig.mk # └── device.mk </pre> * 编译前检查: <pre> source build/envsetup.sh lunch lineage_codename-eng mka bacon </pre> === 故障排除 === * 常见错误解决方案: {| class="wikitable" ! 错误现象 !! 解决方案 |- | '''AOSPDTGEN: Missing partition images''' || 检查system/vendor目录是否包含完整的文件系统内容 |- | '''Unsupported Android version''' || 确认aospdtgen版本与Android版本匹配 |- | '''Vendor mismatch''' || 使用<code>fastboot getvar all</code>验证设备代号 |} === *后期可根据编译器报错情况,修改设备树中的对应声明即可。 ===
返回
为新设备编写类原生device tree
。