Pixel5 编译、刷入AOSP
2024-10-23
| 2024-10-24
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
前言: 本文将详细介绍如何编译和刷入Pixel 5设备的AOSP(Android Open Source Project)系统。我们将逐步讲解环境配置、源码获取、编译过程以及系统刷入等关键步骤。通过这个过程,你将能够构建一个自定义的Android系统,这对于进行框架层面的研究和调试非常有帮助。
在开始之前,请确保你有足够的磁盘空间(至少200GB)和一台性能较好的计算机,因为Android源码的编译是一个耗时且资源密集的过程。同时,你还需要准备一台Pixel 5设备用于最终的系统刷入。
让我们开始这个激动人心的Android定制之旅吧!
 
 

0x0 配置环境

Android的源码都是通过repo 进行拉取的
 

0x1 拉取源码

我选取的是android12.0.0_r28版本
拉取源码,取决于网速,源码大约100多G
拉去完成后,开始编译
 

0x2 编译

编译部分非常简单,因为我的环境编译过内核等项目,所以环境非常齐全,无法提供安装了哪些包,可以先尝试编译,缺什么环境补什么
在编译前,需要在官网下载驱动程序的二进制文件,根据型号和版本 https://developers.google.cn/android/drivers?hl=zh-cn#redfinsq1a.220205.002
复制链接,使用curl下载即可,下载完成使用tar命令进行解压
 
解压完成后,会有两个sh文件,执行文件一路回车,输入:I ACCEPT 回车即可
 
接下来进行编译
输入完lunch 后,会输出一堆设备,这里我的设备是pixel5 也就是redfin,这里我选择30 输入回车,自动配置完毕后
即可,编译的日志log信息保存在make.log.txt
接下来喝杯咖啡,修几个bug,再睡一觉 等待编译完成,我的电脑一共耗时1:24:44(hh:mm:ss)
 

0x3 刷入

在刷入前,需要先配置一个临时的环境变量,如果你直接fastboot刷入也会看到提示
  • 如果你是物理机Linux或vm虚拟机
    • 如果你跟我一样 是Windows+WSL 那么推荐你参考我博客中的搭建舒适的WSL开发环境 中的adb配置
       
       

      0x4 效果

      notion image
      notion image
       
       

      0x5 补充

      如果项目需要导入到Android Studio中去查看或修改,我们需要为项目生成索引和工程配置文件
      在运行过source build/envsetup.sh 的终端里运行:
      生成完毕后,打开Android Studio ,点击Open Project,找到Android.ipr 文件并打开,等待as进行索引
       

      0x6 启动模拟器

      在开发学习过程中,频繁刷机可能会影响调试效率。为了更方便地进行调试,我们可以选择编译模拟器版本。这种方法能够让我们更灵活地测试和调试代码。
      等待编译完成后,确保在执行过source build/envsetup.sh lunch sdk_phone_x86_64-userdebug 的终端下 启动虚拟机
      如果报以下kvm权限不足的错误
      需要添加权限:sudo chmod 777 -R /dev/kvm
       
      启动虚拟机,经过测试后,我在wsl下启动 模拟器在开机界面会段错误崩溃:
      首先确保电脑虚拟化开启(我电脑没有这个问题 暂且认为跟他有很大的关系)
      如果输出0,说明CPU不支持硬件虚拟化,或bios中未启动
      然后禁用GPU加速 即可正常启动
       
      wsl下启动的虚拟机画面是有点卡顿的,画面可能会一闪一闪的,我们可以把镜像打包出来,在物理机(Windows)下,Android studio中安装
      Android13以下使用这个命令
      Android13及以上使用这个命令
      打包完成后会生成sdk-repo-linux-system-images为前缀的 AVD 映像 zip 文件,比如我的路径是: android-12.0.0_r28/out/target/product/emulator64_x86_64/sdk-repo-linux-system-images-eng.devnn.zip
      将它复制到物理机磁盘下并解压
      然后在Android Studio中创建一个模拟器,使用命令加载打包的系统
       
      emulator命令是android sdktools目录下的,将它添加到系统环境变量中或使用全路径
       

      0x7 后记

      后面我才知道 原来有专门阅读AOSP源代码的工具 叫做ASFP,全称
      Android Studio for Platform ,还有Cuttlefish Google推出的’云手机’,我没有上手尝试过,感兴趣的朋友们可以自行尝试
       
      💡
      踩坑:
      我去下载ASFP 在官网下载链接下载出来的,没有import aosp poject选项,并且看设置和About 都是Android Studio而不是ASFP(可能是官方合并了 AS默认也带有这个功能),可以直接下载2023版本的
      使用ASFP打开后,并且等待索引完毕,代码跳转即可正常
      但是我发现了一个新的问题,Attach Debugge无法调试手机中的应用,只能看到设备,这是因为我们编译的是userdebug版本 而不是eng版本
      那怎么办呢?重新编译又要等待非常多的时间,可以直接使用root权限动态修改
      或者我们直接修改源码,打开framework/base/core/java/com/android/internal/os/Zygote.java 搜索applyDebuggerSystemProperty方法
      在if下面加入
      强制给他打开 重新刷入,并且重启模拟器即可解决
       
       
      notion image
       
       
      参考以下链接:
       
       
       
    • Android
    • ROM
    • AOSP
    • AOSP源码定制学习笔记Pixel5内核编译开启KallSyms
      Loading...
      目录