Framework -- wsl编译安卓系统
最近在研究研究android系统源码,打算在编译一个room验证下自己的想法,在windows上折腾很久,终于算是在windows上把安卓系统编译出来了。
一、环境准备
1.1 硬件环境
要求 | Android 开源项目 | Android Open Source Project
1、windows11
2、至少16g内存
1.2 配置ubuntu 22.04
1、升级wsl 到wsl2
使用wsl -l -v
查看自己的wsl版本,如果是wsl1,请升级到wsl2
2、配置ubuntu虚拟内存
WSL2 默认可以使用的内存大小为主机的 80%, 打开 Windows 资源管理器, 地址栏输入 %UserProfile%
回车, 在该目录下创建一个文件, 名字为 .wslconfig
, 写入内容示例如下 (我电脑 32GB 内存, 分给 WSL 内存 20GB, 另外设置交换分区 4GB)
[wsl2] |
执行 wsl –shutdown 关闭 WSL, 再重新打开即可
1.3 下载源码
Framework – 下载Android系统源码 | 水沝淼 (laoyuyu.me)
1.4 软件环境准备
进入wsl,安装编译需要的软件
1、安装jdk
sudo apt-get update |
2、设置输出目录(可不用,默认是在out 目录下)
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory> |
3、使用ccache 优化编译速度
sudo apt install ccache |
4、安装一些依赖库
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libncurses5 |
二、配置编译环境
2.1 使用AOSP源代码目录下的../build/envsetup.sh脚本初始化环境:
android 13 版本,envsetup.sh
文件时在build/make
目录下了
如果找不到该文件,自行下载envsetup.sh,并将文件放到<AOSP>/build
文件夹下
注意后面的lunch命令等都跟这一步有没有执行有关。如果没有执行后面会提示找不到lunch命令。
source build/make/envsetup.sh |
2.2 选择编译目标
用lunch命令选择编译目标.额外的配置可以用参数传递。例如:
lunch aosp_arm-eng |
所有的编译目标的格式都是:BUILD-BUILDTYPE,BUILD指的是指定特性的结合。其中BUILDTYPE是下面列出的其中一个:
Buildtype 用途 |
这儿因为选取的是pixel 5,所以代号为redfi,对应的编译选项为:
lunch aosp_redfin-userdebug |
当然也可以编译x86的镜像)
lunch aosp_x86 |
输出结果为:
============================================ |
2.3 如果想在电脑上使用模拟器调试,需要编译模拟器镜像
使用 Android 模拟器虚拟设备 | Android 开源项目 | Android Open Source Project
lunch sdk_phone_x86_64 #64位 |
编译命令:https://source.android.com/docs/setup/build/building#build-the-code
其中m
是 make
的缩写
完成上面的步骤后,就直接make好了,然后将日志写入到文件中,方便查看记录和排查错误。
make -j4 >> compile.log |
编译成功后:
在out/target/product/generic_x86_64
目录中可以看到编译出来的文件(这里我编译的是x86_64),可以看到下面这些关键文件:
android-info.txt |
三、启动模拟器
启动模拟器,查看效果
cd aosp |
Framework -- wsl编译安卓系统