【android Framework 探究】pixel 5 内核编译

相关文章:
【android Framework 探究】android 13 aosp编译全记录

【android Framework 探究】android 13 aosp 全记录 - 烧录

一,环境

主机 -> Ubuntu 18.04.6 LTS

内存 -> 16GB

手机 -> pixel 5 代号redfin。kernel代号redbull

二,代码拉取

这里需要注意:

  • 之前文章下载的aosp源代码是不包含kernel部分的,只有打包好的二进制镜像,重新编译需要单独拉取。
  • kernel代码不用git clone,那样会缺少预编译文件和必要的编译工具,使用repo拉取。
  • 代码优先从google源拉取,因为我开始从中科大源拉取的代码始终编译不过去,提示各种错误(一直各种怀疑环境有问题),困扰了很久,解决无果,最后搭梯子从google获取基本顺利的编译成功。

拉取代码

先搞清楚pixel 5 kernel的分支,参考官方文档: 构建 Pixel 内核,虽然官方支持的piex 5,最新支持android 14,它显示的分支是:

设备 AOSP 树中的二进制文件路径 仓库分支
Pixel 5 (redfin) device/google/redbull-kernel android-msm-redbull-4.19-android14-qpr3

但是我上次编译的版本是android 13,这样就能和我的源码匹配上,所以我找下对应的分支名,从这里查看:kernel manifest。

我要的分支是:android-msm-redbull-4.19-android13-qpr2,所以我的指令是:

repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-redbull-4.19-android13-qpr2

repo sync -j4

网络不好可能需要多次执行sync,最后下载成功!

编译

编译之前,首先看下手机kernerl的信息,把代码切换到对应的tag点:连接手机,执行adb shell cat /proc/version

Linux version 4.19.239-g248fa42a73b2-ab9062766 (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchain/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Wed Sep 14 05:22:28 UTC 2022

对应的commit就是248fa42a73b2

复制代码
cd  private/msm-google
git checkout 248fa42a73b2

进入目录check下,其中build_redbull.sh是编译入口,各种预编译已经在这个文件提前引用好了。

复制代码
├── build
├── build.config -> private/msm-google/build.config.redbull.no-cfi
├── build_redbull-gki.sh -> private/msm-google/build_redbull-gki.sh
├── build_redbull.sh -> private/msm-google/build_redbull.sh
├── build_sm7250.sh -> private/msm-google/build_sm7250.sh
├── build_sm8250.sh -> private/msm-google/build_sm8250.sh
├── out
├── prebuilts
├── prebuilts-master
├── private
└── tools

执行

./build_redbull.sh

成功会输出:

复制代码
Files copied to /aosp-kernel-redbull/out/android-msm-pixel-4.19/dist
aosp-kernel-redbull/prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-barbet.img is LZ4 compressed
boot image created at aosp-kernel-redbull/out/android-msm-pixel-4.19/dist/boot.img
Signing the boot.img...
vendor boot image created at aosp-kernel-redbull/out/android-msm-pixel-4.19/dist/vendor_boot.img

遇到的问题:

soong_zip: command not found

解决方法:找到aosp里面的soong_zip路径,设置环境变量

export PATH=$PATH:/xxx/aosp/prebuilts/build-tools/linux-x86/bin

烧录

烧录之前提前准备好恢复手段,一旦重启失败,及时恢复。两种方法:

1,提前下载原生系统刷机包

2,如果你已经下载并编译过aosp代码,可以在子目录out/target/product/redfin找到

怎么刷这篇文章都有讲:【android Framework 探究】android 13 aosp 全记录 - 烧录

现在开始烧录:

  • cd out/android-msm-pixel-4.19/dist
  • fastboot flash boot boot.img
  • fastboot flash vendor_boot vendor_boot.img
  • fastboot reboot

重启成功,至此可以自己在内核代码增加日志进行探索了!

相关推荐
用户2181697049306 小时前
Kotlin 语法二
android
妖星6 小时前
android 源码分析surfaceFinger是如何通过设置属性启动bootanim
android
JoyMonitor6 小时前
APK mmap 内存增长定位:pagemap 与 DEX 结构联合定位方法
android
有什么事6 小时前
永久虚拟免费云手机能实现吗,本地安卓容器与云端托管的技术边界
android·智能手机
妖星6 小时前
Android 源码 .rc 语法详解
android
JMchen6 小时前
实战项目一——实现一个高性能图片滤镜App
android·c++·性能优化
白帽攻防录7 小时前
SRC 挖洞:Android 蓝牙预认证 RCE 深度复盘,CVE-2026-55330 怎么在蓝牙范围内零交互攻破手机
android·网络安全·智能手机·src漏洞挖掘
vilya7 小时前
手机端 Agent 是怎么跑起来的:决策循环、四道护栏、两条红线
android·agent
2501_915921437 小时前
详细教程:使用Perfdog工具测量iOS应用的功耗性能与优化方法
android·macos·ios·小程序·uni-app·cocoa·iphone
hunterandroid8 小时前
android方案 : Multiplatform 跨平台开发实战:一套代码,多端运行
android·前端