
> 写在前面:这篇文章原本发在 2025 年初,现在已经过了一年半时间,期间 LineageOS 跨了两个大版本,索尼官方仓库也发生了不少变化。我重写了一遍,补了新的工具链和踩坑记录,老读者直接看「2026 年视角的更新」小节就行,新读者按顺序读也无障碍。

项目背景
索尼 Xperia 1(开发代号 griffin / 型号 J9110)的源码编译,说白了就两条主流路径:
- Open Devices:索尼 2018 年起在 GitHub 开源的官方 device tree、kernel、vendor blobs,目标是把原厂构建环境尽可能搬给开发者
- LineageOS:基于 AOSP 的最大第三方 ROM,继承了索尼 device tree,但上面叠加了社区的本地化修改、内核补丁和自家系统应用
说真的,这两条路走到最后编译出来的 system.img 长得都差不多,但中间过程差异巨大——尤其是对想学 AOSP 构建的人来说,这是两条完全不同的学习曲线。
截至 2026 年 08 月,索尼 Open Devices 在 sonyxperiadev 组织下的仓库活跃度已明显放缓,最近一次大版本同步停留在 Android 13 分支,Android 14 仅有部分 kernel 源码释出,Android 15 更是零星提交状态。这是评估时必须正视的科技数码行业现状——官方对这条路的投入确实在收缩。
核心差异
1. 设备树与 Vendor Blobs
- Open Devices:设备树由
sonyxperiadev组织官方维护,vendor blobs 来自索尼开源仓库或官方解包工具,版本与官方固件一一对应 - LineageOS:
LineageOS/android_device_sony_griffin等仓库基于官方设备树 fork,带本地 CAF 补丁;vendor blobs 通常沿用索尼开源版本
设备树冲突是新人最常踩的坑。老实讲,这俩项目都用 device/sony/griffin/ 路径,一旦混用 repo sync 会触发大量 merge conflict。建议在本地用 repo forall -c 'git remote -v' 先核对 remote URL,别上来就一把梭哈。
2. 源码规模与 Manifest
- Open Devices:仅需 AOSP 主线 + 索尼 local_manifests,约 80–100GB
- LineageOS:除 AOSP 外还需
LineageOS/android私有仓库(主题、隐私扩展、签到服务),总规模 120GB+
实测在千兆带宽下,LineageOS 全量 repo sync 约需 4–6 小时,Open Devices 约 3–4 小时;若使用国内代理镜像(清华源、中科大源、阿里云镜像)可缩短至 2 小时以内。
3. 编译命令链
| 步骤 | Open Devices | LineageOS |
|---|---|---|
| 初始化 | repo init -u AOSP manifest |
repo init -u github.com/LineageOS/android |
| 编译入口 | lunch aosp_griffin-userdebug |
breakfast griffin |
| 编译命令 | make -j$(nproc) |
brunch griffin |
brunch 内部封装了 lunch + make,但额外注入 LineageOS 私有模块和签名配置。值得注意的是,Android 10 之后 Soong/Blueprint 已逐步取代传统 Make——Open Devices 在 android-11.0.0_r48 上仍保留 Make 与 Soong 双栈,LineageOS 则更激进地迁移到纯 Ninja + Soong,到 22.x 分支后 Make 已彻底退出。
4. 产物与签名
- Open Devices:产物用 AOSP test-keys 签名,刷入后
ro.build.type=userdebug - LineageOS:产物用 LineageOS test-keys 签名,刷入后
ro.lineage.version=xx,系统设置里有「关于 LineageOS」项
test-keys 签名意味着任何持有 AOSP 源码的人都能伪造同签名 OTA——研究环境可以接受,但日常使用要警惕。LineageOS 17.1 之后引入 avb 2.0 强制启动验证,安全性略高,22.x 分支更是默认开启 Verified Boot 的完整链路。
5. OTA 与刷机
- Open Devices:无 OTA,需手动 fastboot 刷入;适合实验室环境
- LineageOS:支持官方 OTA 服务器(需刷入 LineageOS Recovery),日常使用更便利
A/B 分区陷阱:Xperia 1 采用 A/B 分区方案(boot_a / boot_b),Open Devices 刷机脚本需注意 slot 切换。直接 fastboot flash boot 只会刷到当前 active slot,另一个 slot 还是旧内核,系统启动到一半直接翻车。正确做法是显式指定 fastboot flash boot_a 或先 fastboot set_active b 再刷。
编译流程(以 Open Devices 为例)
环境准备
Ubuntu 20.04+,OpenJDK 11(编译 Android 11 分支专用;如编译 Android 14+ 需换 OpenJDK 17),repo、git、ccache,磁盘 ≥ 250GB(留出 ccache 空间)。建议分配独立 SSD,机械盘会让 ccache 命中率下降 30% 以上——这个数我自己反复测过,差距肉眼可见。
拉取源码
mkdir ~/xperia1 && cd ~/xperia1
repo init -u https://android.googlesource.com/platform/manifest \
-b android-11.0.0_r48
git clone https://github.com/sonyxperiadev/local_manifests \
.repo/local_manifests -b android-11.0.0_r48
repo sync -c -j$(nproc)
准备 Vendor
cd ~/xperia1/device/sony/griffin
./extract-files.sh # 需连接一台运行官方固件的 Xperia 1
此脚本通过 adb pull 从真机提取 vendor blobs。部分二进制受 NDA 限制无法开源(如相机 ISP 固件、DSEE HX 音频后处理模块),这也是华强北维修圈至今无法完全替换原厂相机算法的原因之一——别问,问就是真没有开源版本。
编译
source build/envsetup.sh
lunch aosp_griffin-userdebug
make -j$(nproc) 2>&1 | tee build.log
首次编译约 2–4 小时(取决于机器配置),ccache 可加速增量构建。我自己两台机器实测数据:
- i7-12700 + 64GB RAM 全线程编译:2 小时 17 分
- i5-8250U + 16GB 笔记本:6 小时 42 分
后者主要是内存瓶颈,-j$(nproc) 反而让 swap 起飞。如果你预算有限,建议把 -j 调到物理核心数的一半左右,效果反而更好。
刷机
adb reboot bootloader
fastboot flash boot_a out/target/product/griffin/boot.img
fastboot flash system out/target/product/griffin/system.img
fastboot reboot
Bootloader 解锁的隐藏代价:刷机前必须在索尼官网解锁 Bootloader,否则 fastboot 写入会被拒绝。解锁后有两个后果你必须知道——
- IMEI 失去 DRM 认证,原厂保修自动失效(部分国家甚至影响二手交易残值)
- Widevine L1 强制降级为 L3,Netflix / Disney+ / Amazon Prime Video 全部锁 480p,这个真挺破防的
如果你的 Xperia 1 是主力机,建议先想清楚这俩代价再动手。
深度对比:构建系统的隐藏差异
Kernel 编译
- Open Devices:沿用索尼自家 defconfig,
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-,Clang 8 工具链 - LineageOS:在 Sony defconfig 基础上叠加 CPU governor 调优(Schedutil 默认改 interactive)、WireGuard 补丁、KCAL 屏幕校准模块
SELinux 策略
Open Devices 几乎原样使用索尼 sepolicy,LineageOS 则放宽了部分 untrusted_app 域限制,便于自定义权限,但代价是失去部分 CTS 兼容性——后者对一般用户无所谓,跑银行类应用可能遇到 SafetyNet 触发。
Treble 与 Project Mainline
LineageOS 17+ 完整支持 VNDK 校验,可刷入索尼 GSI 测试镜像;Open Devices 由于 vendor 接口未与 system 分离,GSI 兼容性较差。这块差距到 22.x 分支依然存在,不是 LineageOS 没想解决,而是索尼设备树的历史包袱太重。
横向对比:其他主流第三方 ROM 在 Xperia 1 上的现状
除了 Open Devices 和 LineageOS,Xperia 1 上还能跑不少其他 ROM。截至 2026 年 08 月的情况:
| ROM 项目 | 基于 Android | 维护状态 | Xperia 1 适配 | 主要特色 |
|---|---|---|---|---|
| LineageOS | 14–15(21/22.x) | 活跃 | 官方支持 | 干净、长期维护、OTA 完整 |
| crDroid | 14–15 | 活跃 | 社区维护 | 性能调度激进,自带大量自定义 |
| Derpfest | 14 | 半活跃 | 社区维护 | UI 花哨、主题引擎强 |
| Evolution X | 14–15 | 活跃 | 社区维护 | Material You 深度定制 |
| PixelExperience | 13–14 | 维护停滞 | 已无官方构建 | 原 Pixel 风格,但基本凉了 |
| Open Devices | 11–13 | 半停滞 | 官方 | 原厂 AOSP 体验,研究首选 |
说白了,如果你想要「能刷能日常用」的天花板体验,crDroid 和 Evolution X 在调度和 UI 上的打磨都比 LineageOS 更进一步;但如果你要的是「能学 AOSP 编译」的研究环境,Open Devices 仍然是唯一正统选择。
AI 在编译调试中的常态化实践
AI 辅助编译错误诊断到 2026 年已经不是「新玩法」了,基本是 ROM 开发者社区的标配工作流。拿我自己来说,每周至少用个三五次:
- 编译错误定位:把
build.log里报错前后 200 行丢给 Claude / GPT-5,让它直接给出最可能的根因和修复命令。这招对 sepolicy 冲突特别有效,规则解释比 Google 官方文档接地气多了 - 资源合并错误解读:aapt2 报错信息一向晦涩,LLM 解释起来比人肉看堆栈快一个数量级
- Kernel panic 行号关联:把 panic 日志喂给 AI,自动关联到具体驱动模块,省掉自己翻代码的时间
几个 2026 年的实测体感:
- 用 Claude Sonnet 4.5 / GPT-5 这一档模型,对常见编译错误的首次命中率基本在 80% 以上
- 复杂内核死锁、AI 资源生成失败这类需要上下文推理的,能给到 50% 左右的有效建议
- 仍然无法替代对构建系统的深入理解,但确实把新手的首次成功编译时间从平均 8 小时压缩到 3 小时以内
一个反直觉的发现:越是「新手级」报错,AI 收益越大;越是你已经踩过一遍的「奇怪坑」,AI 给的答案反而不如翻 GitHub issue 历史靠谱。工具用顺手了,就知道什么时候该问 AI、什么时候该去翻 issue tracker。
常见问题(FAQ)
- vendor 缺失导致编译失败:
extract-files.sh需要 root 设备,或手动从索尼开源仓库克隆对应 prebuilt。如果你手里没有可用的 Xperia 1 真机,这步基本卡死 jack-server端口冲突:OpenJDK 11 已弃用 jack,android-11.0.0及更新分支可直接改用d8,无需再配 jack 服务- 刷机后无限重启:检查
vendor/是否完整,adb logcat | grep -i sony常见vendor/lib/xxx.so缺失提示 - 混淆 Open Devices 与 LineageOS 设备树:两者在
device/sony/griffin/路径相同但内容不同,绝对不能混用 repo 仓库 - 动态分区不足错误:
super.img重建时需要 ≥ 8GB 空闲,Linux 老内核(5.4 以下)对动态分区支持不完善,建议升级到 5.10+ - LineageOS 22.x 编译卡在 RBE 阶段:新版 Android 引入 Remote Build Execution,本地编译需要显式禁用,参考
export DISABLE_RBE=true - Sony 设备树与主线 Soong 不兼容:Open Devices 仓库里的 Blueprint 文件可能依赖旧版 Soong API,切分支前先查 commit 记录
选型建议
| 场景 | 推荐方案 |
|---|---|
| 内核调试、安全研究、ROM 移植 | Open Devices(纯净、可控) |
| 日常使用、隐私扩展、长期维护 | LineageOS(成熟、社区活跃) |
| Sony 影像 API 二次开发 | Open Devices(API 行为最接近原厂) |
| 团队交付、多人协作 | LineageOS(构建产物统一、OTA 体系完整) |
| AI 模型本地化部署 | LineageOS(自带 microG、Neural Networks API 1.3 补丁) |
| 二手交易再刷机 | Open Devices + 官方解锁(IMEI 风险可控) |
| 喜欢深度定制 UI | crDroid / Evolution X |
| 想要 Pixel 风格省心体验 | Evolution X(PixelExperience 基本已停更) |
实战 Checklist
编译前请逐项确认:
- 磁盘 ≥ 250GB,内存 ≥ 16GB
- ccache 已配置(
ccache -M 50G) - 已解锁 Bootloader 并备份 TA 分区
- 官方固件版本与 device tree 分支匹配
extract-files.sh成功生成完整vendor/- Java 版本与 Android 分支一致(11 用 OpenJDK 11,14+ 用 OpenJDK 17)
- 内核版本 ≥ 5.10(支持动态分区)
- 关闭 SELinux 的
enforcing模式下的make selinux_policy子项(仅调试时)
2026 年视角的总结
回过头看,索尼 Open Devices 这条路现在更像「AOSP 构建教学样板」而非「日常可用的 ROM 项目」——它的价值在于让你看到一份接近上游的、未经社区魔改的原始工程结构;至于拿它当主力机系统,索尼官方维护节奏已经不太跟得上了。
LineageOS 则完全相反,它现在已经是一套成熟的「产品型」系统——OTA 体系、签名验证、模块化 kernel 配置、社区维护的 device tree,每一项都是十年积累的产物。它的门槛也在抬升,22.x 编译需要处理的依赖复杂度比 Android 11 时代高了一个台阶。
如果你只是想刷机体验,建议直接下载 LineageOS 官方 nightly 镜像,省事。
如果你想真正掌握 AOSP 构建,Open Devices 是起点,但建议把它当作「学习材料」而不是「日常系统」——刷完后立刻备份 TA 分区,随时能 fastboot 回官方固件。
最后那句老话:两者不能混用同一套 device tree,设备树冲突是新人最常踩的坑,你在编译 Xperia 1 时遇到的最大坑是 vendor 缺失还是 jack-server 报错?评论区聊聊你的 debug 过程。
相关阅读:手机868 深圳报价