WSL2编译aosp并刷入Pixel
搭建构建环境
https://source.android.google.cn/setup/build/initializing?hl=zh-cn
本人Ubuntu版本是22.02
,
1 | Ubuntu 18.04,其他版本请自行查看官方文档 |
设置WSL内存和swap
打开开始菜单,输入%UserProfile%
,新建.wslconfig
,写入以下配置:
1 | [wsl2] |
然后wsl关闭,重启。
wsl2挂载USB
既然是wsl编译的,刷机的时候自然需要adb
、fastboot
命令,但是wsl默认是没有连接USB的,需要手动安装usbipd-win
,
具体可翻阅Microsoft官方文档
注意事项(重要)
- 微软并没有把wsl推送到最新版本,因此如果自己的Linux内核在
5.10.60.1
以下,务必手动升级内核,传送门。直接下载安装即可,记得先关闭wsl - 如果是
Ubuntu 20.04
以上,apt可能找不到linux-tools-5.4.0-77-generic
,请参照官方解决办法其他可能需要的配置
设置文件夹区分大小写
如果你是在/mnt/*/下进行编译的,可能需要把文件夹改为大小写敏感
,具体可见官方文档转移wsl默认位置
wsl默认是在C盘创建一个vhxd虚拟硬盘,所以如果C盘空间不多,可以转移到其他盘,原文链接1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19查看安装的虚拟机
wsl -l -v
关闭所有正在运行的虚拟机
wsl --shutdown
对需要迁移的分发或虚拟机导出
虚拟机名称:wsl -l -v可以查看名字,我的是Ubuntu-20.04
文件导出路径:我导出在D盘(D:\wsl-Ubuntu-20.04.tar)
wsl --export 虚拟机名称 文件导出路径
卸载虚拟机(删除C盘的虚拟机数据)
wsl --unregister 虚拟机名称
导入新的虚拟机
目标路径:新的虚拟机文件路径(理解为软件的安装路径就对了,我安装在D:\wsl\Ubuntu2004)
虚拟机文件路径:第3步导出的文件(D:\wsl-Ubuntu-20.04.tar)
--version 2:指定使用WSL2,如果填1就是指定使用WSL
wsl --import 虚拟机名称 目标路径 虚拟机文件路径 --version 2
查找手机对应的aosp分支
Build ID
:要在下面查找驱动时用到
标记
:是源代码的分支
支持设备
:要注意该分支是否支持自己的手机
本人Pixel,所以对应的标记是android-10.0.0_r17
,即pixel支持的最后一个版本
安装repo
1 | sudo apt-get update |
下载aosp
方法1:下载主工程压缩包
下载aosp压缩包 https://source.android.com/setup/build/downloading
解压后执行
1 | repo sync |
方法2:直接同步指定分支(中科大源)
参考AOSP(Android) 镜像使用帮助 - LUG @ USTC
可以直接拉取特定的版本:
1 | repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0_r17 |
下载驱动
1、根据自己手机型号找到对应代号
https://developers.google.com/android/drivers
本人使用的是pixel一代,代号为sailfish
,根据步骤一中的build找到对应驱动,如本人的是QP1A.191005.007.A3
2、解压运行sh文件,生成驱动目录vendor,将整个verdor目录拷贝至aosp根目录
编译aosp
1 | source build/envsetup.sh |
刷入镜像
切换到目录 /aosp/out/target/product/自己手机的代号
运行
1 | 对应上面的版本 |
1 | 进入bootloader模式 |
flashall方式若无效,可用以下命令
1 | 双清 |