用途:本技能面向 LineageOS 自定义 ROM 开发,覆盖从同步源码到构建、设备树配置与提交贡献的完整流程。
主要能力:
- 初始化与同步源码:mkdir ~/lineage && cd ~/lineage;安装 repo 后执行 repo init -u https://github.com/LineageOS/android.git -b lineage-21.0 --git-lfs,再用 repo sync -c -j$(nproc) --force-sync --no-tags --no-clone-bundle 同步。
- 构建:source build/envsetup.sh 后 breakfast <device>、brunch <device>;或用 mka bacon、mka bootimage、mka systemimage 分别构建。产物位于 out/target/product/<device>/lineage-21.0-*-UNOFFICIAL-<device>.zip。
- 设备树:涉及 lineage_<device>.mk、lineage.dependencies、vendorsetup.sh、BoardConfig.mk、device.mk、extract-files.sh 等文件;配置文件中继承 device.mk 与 common_full_phone.mk,并设置 PRODUCT_NAME 等变量。
- repopick:支持单选(repopick 12345)、多选、按主题 -t、含依赖 -Q、强制覆盖 -f、预览 -n,变更来自 https://review.lineageos.org。
- Vendor blobs:使用 extract-files.sh 从设备或 OTA 包提取,proprietary-files.txt 支持目标路径映射与其他设备来源。
- 贡献:配置 Gerrit 用户名后,repo start 建分支、git commit 提交,并 push 到 ssh://<username>@review.lineageos.org:29418/<project> HEAD:refs/for/<branch>。
适用场景:从源码编译、定制 LineageOS,或向 Gerrit 提交改动。
限制:常见问题包括 breakfast 缺仓库需重同步、SELinux 拒绝需生成策略、缺少 blobs 需补全 proprietary-files.txt 并重新提取;具体设备支持与版本要求暂未提供。