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 效果
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 sdk
的tools
目录下的,将它添加到系统环境变量中或使用全路径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下面加入
强制给他打开 重新刷入,并且重启模拟器即可解决
参考以下链接: