863 字
4 分钟
pixel6 aosp14编译 升级内核
2025-07-08
无标签

AOSP14 编译#

环境配置#

Repo#

curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo
chmod +x /usr/local/bin/repo

Git#

sudo apt install git

Platform tools#

developer.android.com

建议使用比较新的,旧的可能不支持一些命令

Repo 拉取 aosp 源码#

repo init -u http://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-14.0.0_r34
#这里用了中科大的镜像源也可以之间使用google官方的https://android.googlesource.com/platform/manifest
repo --trace sync -c -j$(nproc --all) --no-tags

拉取需要的耗时很久,直到出现 repo sync has finished successfully 代表成功拉取

解压驱动#

先在source.android.com中找到你拉取 aosp 版本对应的 build id

我拉取的是 android-14.0.0_r34,在Nexus 和 Pixel 设备的驱动程序二进制文件 | Google Play services | Google for Developers中找到对应 build id 的驱动文件

解压,复制其中的 sh 文件到 aosp 源码根目录下,执行

读完 License 后输入 I ACCEPT 回车

编译 AOSP#

设置环境#

在源码根目录下执行

source build/envsetup.sh

选择构建目标#

与之前的版本不同,aosp14 使用 lunch 选择构建目标的规则变成了

Terminal window
lunch aosp_$device-$buildID-$version

device 为设备代号

buildID 取 build id 的前 4 位

version 可取 user userdebug eng

对应我编译的版本即是

lunch aosp_oriole-ap1a-userdebug

开始编译#

aosp 编译对内存资源的消耗巨大!

我在编译时最多消耗了约 40G 的内存,并且编译时建议使用纯命令行模式或者使用 ssh 连接,图形界面在低内存时极易崩溃

如果内存不足,请增加 swap 的大小以保证编译的正常进行

Terminal window
m
#直接执行m即可开始编译
#或者m -j16修改编译的线程数

编译时间取决于编译设备的性能,虚拟机可能要跑非常久,建议睡觉的时候跑

刷入编译好的 aosp#

编译好的文件在 out/target/product/oriole 目录下

adb reboot bootloader
ANDROID_PRODUCT_OUT=$aosp_PATH/out/target/product/oriole/ fastboot flashall -w
#将$aosp_PATH替换为自己的源码路径
#-w代表清除用户数据

如果不识别设备请更换数据线为

将内核升级到 6.1#

前提#

必须是特定的 build,这里的 build 只显示支持的最新版本(貌似 aosp 不受限制?没测试)

构建 Pixel 内核 | Android Open Source Project

上面编译的 AP1A.240505.004 正好是一个特定的版本

Repo 拉取 kernel 源码#

repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b android14-gs-pixel-6.1
repo --trace sync -c -j$(nproc --all) --no-tags

更新供应商 ramdisk#

这个直接参照官网操作即可

构建 Pixel 内核 | Android Open Source Project

pixel6 的路径是 prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img

编译内核#

对于 5.15 及以上的内核的build.sh​ 脚本已替换为 Kleaf 的新内核构建系统

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

刷入内核#

编译后的文件在 out/slider/dist 目录下

adb reboot bootloader
fastboot flash boot boot.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash dtbo dtbo.img
fastboot reboot fastboot
fastboot flash vendor_dlkm vendor_dlkm.img

加入 SUKISU#

参照github.com的 workflow

注意!目前 SUKISU 的 kernel_patch 在 pixel6 的 6.1 内核无法运行(至少对我来说是这样),可以编译完成后先 fastboot boot 一下测试是否可用

重新编译刷入即可

如果要使用内核模块,则需要重新编译 gki 内核刷入后再提取 boot 使用 apatch 修补(这里使用 SukiSU 的 kernel_patch 虽然可以开机,但是在一些情况下会导致 kernel panic 直接死机)

repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-android14-6.1-2025-06
repo sync -j16

参考文档:#

Pixel 6Pro AOSP 源码在 Docker 内编译全过程

构建 Pixel 内核 | Android Open Source Project

blog.fangg3.com

AOSP 代码环境配置 | kpa

GitHub - MiRinFork/GKI_SukiSU_SUSFS: 使用 SukiSU 和 SUSFS 的 GKI 内核

Guide compile kernel Raviole from sources ! [ 5.10 & 6.1 & mainline ]

pixel6 aosp14编译 升级内核
https://1ncharles.github.io/posts/android/pixel6-aosp14编译-升级内核/
作者
Britney
发布于
2025-07-08
许可协议
CC BY-NC-SA 4.0