【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

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

相关推荐
安卓开发者11 分钟前
Android RxJava 组合操作符实战:优雅处理多数据源
android·rxjava
阿华的代码王国16 分钟前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼16 分钟前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jerry说前后端35 分钟前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
alexhilton1 小时前
深入浅出着色器:极坐标系与炫酷环形进度条
android·kotlin·android jetpack
一条上岸小咸鱼7 小时前
Kotlin 基本数据类型(一):Numbers
android·前端·kotlin
Huntto8 小时前
最小二乘法计算触摸事件速度
android·最小二乘法·触摸事件·速度估计
一笑的小酒馆8 小时前
Android中使用Compose实现各种样式Dialog
android
红橙Darren8 小时前
手写操作系统 - 编译链接与运行
android·ios·客户端
鹏多多.12 小时前
flutter-使用device_info_plus获取手机设备信息完整指南
android·前端·flutter·ios·数据分析·前端框架