前言
上半年终于鼓起勇气的我辞去了国内某手机厂商的职位,一方面想休整一下,另一方面也想好好梳理一下自己在安卓这方面的知识,沉淀积累。由于个人知识面有限,若有错误,欢迎大家积极指出,共同讨论,一起进步。
本系列希望从应用开发者的角度出发,将系统层面各个系统服务的脉络及运行原理呈现出来。
适用于个人的开发环境配置
离开公司之后,什么事情都得自己动手了,想想以前在公司有一帮专门搞工程编译的同事,那种衣来伸手饭来张口的日子还真是舒坦,身在福中不知福。😂
开篇就来配置我们的开发环境吧,其中包括3部分:系统环境安装、AOSP代码下载及编译、IDE代码导入。
软硬件要求
- 操作系统:Win11专业版 + WSL2(Windows 11 专业版 24H2 26100.2033)
- CPU:尽可能高配置,缩短编译时间(13th Gen Intel(R) Core(TM) i9-13900H 2.60 GHz 14核)
- 内存:至少32G,最好64G(Samsung 32G DDR5 5600MHz + Samsung 8G DDR5 5200MHz)
- 硬盘:1T及以上,Android13的源代码+编译产物大概要占400G左右(Samsung MZVL21T0HCLR-00BL2 1T)
注:括号中为我的机器配置,供参考。我的机器原本有两条8G内存,两个插槽,为了编译,增加了一条32G,8G就留了一条没有换下来。
安装操作系统
推荐安装Win11 专业版,家庭版不能安装WSL,请勿浪费时间。Win11镜像推荐到官网下载,纯净安全,无负担。 推荐使用Rufus系统安装启动盘制作工具,完全免费,傻瓜式安装Win11。
注:如果可能的话,推荐重新分区,为WSL单独建立一个500G左右的分区,方便后续管理。
安装WSL2
- 在BIOS中开启CPU的虚拟化支持(Virtualization Technology) ,简称VT选项。一般都是默认开启的,只要你的机器能启动Android Studio中的模拟器就说明VT选项已经打开了。
Intel平台示例 AMD平台示例
- Windows中的配置:控制面板->程序->启用或关闭Windows功能,勾选Hyper-V 、适用于 Linux 的 Windows子系统 和虚拟机平台 ,重启系统。
- 安装WSL2。当前是2024年11月,默认安装已经是WSL2。据广大网友提醒,WSL1不支持编译AOSP,所以切勿浪费时间。
sh
# 查看WSL支持的Linux发行版本
wsl -l -o
# 安装指定分发,从上面列表中选一个最新的Ubuntu(AOSP官方指定的编译系统)
wsl --install -d Ubuntu-24.04
- 待安装完成后,查看WSL版本。
sh
# 查看当前系统中存在的所有Linux实例
# Name: 实例名
# State: 当前状态
# Version: WSL版本
wsl -l -v
# wsl -v 显示更详细的版本信息。其他命令解释请查询 wsl --help
- 迁移WSL。我们需要在WSL中存放编译AOSP代码,需要巨大的磁盘空间,不幸的是,WSL默认安装在系统盘中,地主家的系统盘也没这么富裕啊,所以需要安装以下步骤迁移到一个500G或更大的分区中。
sh
# 1.查看Linux实例
wsl -l -v
# 2.关闭Linux实例
wsl --terminate <实例名称> # 关闭指定实例
wsl --shutdown # 关闭所有实例
# 3.导出Linux实例
wsl --export <实例名称> <导出地址>
# 例如:wsl --export Ubuntu-24.04 E:\ubuntu2404.tar
# 4.卸载系统盘实例
wsl --unregister <实例名称>
# 5.导入实例到其他盘
wsl --import <新的实例名称> <新的实例存放地址> <导入实例文件地址>
# 例如:wsl --import ubuntu2404 E:\ubuntu2404 E:\ubuntu2404.tar
# 6.启动并进入Linux系统
wsl -d <新的实例名称> -u <Linux用户名>
# 例如:wsl -d ubuntu2404 -u root
另外,可以通过命令行提示符cmd顶部提供的快捷入口进入Linux。
- 在Linux系统中可能需要科学上网,因此代理配置必不可少。微软官网提供了详细的WSL配置参考。这里列出我选用的配置项。
注:使配置项生效需要重启WSL(wsl --shutdown)。
sh
# 文件位置:C:\Users\<用户名>\.wslconfig
[wsl2]
# 启用镜像网络特性支持
networkingMode=mirrored
# WSL2/WSLg DNS 代理隧道,以便由 Windows 代理转发 DNS 请求(请根据实际需要启用)
dnsTunneling=true
# WSL2/WSLg 子系统的 Windows 防火墙集成,以便 Hyper-V 或者 WPF 能过滤子系统流量(请根据实际需要启用)
firewall=true
# 是否强制 WSL2/WSLg 子系统使用 Windows 代理设置(请根据实际需要启用)
autoProxy=true
# 配置WSL能使用的核心数
processors=8
# 配置内存大小,一般为物理内存的50%,AOSP编译要求至少16GB,因此您的机器至少需要32G物理内存
memory=20GB
# 交换分区大小,一般为内存大小的2倍
swap=40GB
# 是否支持嵌套虚拟化,我们后续会在WSL中运行Android模拟器,因此需要打开此选项
nestedVirtualization=true
[experimental]
# 启用空闲内存自动缓慢回收
autoMemoryReclaim=gradual
- 在Ubuntu下安装下载编译AOSP源码所需的软件包,此命令来自AOSP官方文档。
sh
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig