别再折腾虚拟机了!用WSL2在Windows 11上搞定AOSP Android 13源码编译(保姆级避坑指南)

张开发
2026/4/5 5:00:51 15 分钟阅读

分享文章

别再折腾虚拟机了!用WSL2在Windows 11上搞定AOSP Android 13源码编译(保姆级避坑指南)
别再折腾虚拟机了用WSL2在Windows 11上搞定AOSP Android 13源码编译保姆级避坑指南如果你是一名Android开发者想要深入研究AOSP源码传统做法是在虚拟机中安装Ubuntu进行编译。但虚拟机性能损耗大、配置复杂尤其对于Windows用户来说体验并不友好。现在WSL2Windows Subsystem for Linux 2的出现彻底改变了这一局面。WSL2直接在Windows内核上运行Linux性能接近原生同时又能完美融入Windows开发环境。本文将带你从零开始在Windows 11上配置WSL2环境完成AOSP Android 13源码的下载和编译并解决过程中可能遇到的各种坑点。1. 环境准备WSL2与硬件要求1.1 硬件基础配置编译AOSP对硬件要求较高建议配置如下CPU至少4核推荐8核及以上Intel i7/Ryzen 7级别内存16GB起步32GB更佳编译过程非常吃内存存储至少300GB可用空间SSD强烈推荐系统Windows 11 21H2或更高版本提示如果硬件配置不足可以考虑只编译特定模块而非完整系统或者使用云服务器进行编译。1.2 启用WSL2功能在Windows 11上启用WSL2非常简单# 以管理员身份打开PowerShell wsl --install wsl --set-default-version 2这两条命令会自动安装WSL2所需的所有组件包括虚拟机平台和默认的Ubuntu发行版。1.3 安装特定版本的Ubuntu虽然WSL2默认安装Ubuntu但为了AOSP编译的稳定性建议安装特定版本# 查看可用发行版 wsl --list --online # 安装Ubuntu 20.04 LTS wsl --install -d Ubuntu-20.04安装完成后通过以下命令设置默认发行版wsl --set-default Ubuntu-20.042. WSL2高级配置优化2.1 调整WSL2内存和CPU限制默认情况下WSL2会占用最多50%的系统内存对于AOSP编译来说可能不够。我们可以通过配置文件进行调整# 在用户目录下创建或修改.wslconfig文件 notepad $HOME\.wslconfig添加以下内容根据你的硬件调整[wsl2] memory16GB # 限制最大内存使用 processors8 # 使用的CPU核心数 swap8GB # 交换空间大小 localhostForwardingtrue2.2 扩展WSL2虚拟硬盘AOSP源码及其编译产物会占用大量空间默认的1TB虚拟硬盘可能不够# 查看WSL2虚拟硬盘路径 wsl --shutdown diskpart select vdisk fileC:\Users\你的用户名\AppData\Local\Packages\Ubuntu包名\LocalState\ext4.vhdx detail vdisk要扩展虚拟硬盘可以使用# 关闭所有WSL实例 wsl --shutdown # 调整虚拟硬盘大小(例如扩展到200GB) Resize-VHD -Path C:\Users\你的用户名\AppData\Local\Packages\Ubuntu包名\LocalState\ext4.vhdx -SizeBytes 200GB然后在WSL2中扩展文件系统sudo mount -t devtmpfs none /dev sudo mount -t proc none /proc sudo resize2fs /dev/sdb3. AOSP编译环境配置3.1 安装必要依赖包在WSL2的Ubuntu环境中安装编译AOSP所需的依赖sudo apt update sudo apt upgrade -y sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python33.2 配置Repo工具Repo是Google管理AOSP源码的工具配置如下mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo将以下内容添加到~/.bashrc文件末尾export PATH~/bin:$PATH export REPO_URLhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo3.3 配置Git身份git config --global user.email youexample.com git config --global user.name Your Name4. 下载AOSP源码4.1 初始化Repo仓库mkdir ~/aosp cd ~/aosp repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r14.2 同步源码repo sync -j8这个过程会下载约100GB的数据可能需要数小时。如果中断可以重新运行repo sync继续。4.3 处理同步中的常见问题问题1网络连接不稳定导致同步失败解决方案更换镜像源或使用代理export http_proxyhttp://proxy_ip:proxy_port export https_proxyhttp://proxy_ip:proxy_port问题2磁盘空间不足解决方案清理空间或扩展虚拟硬盘见2.2节5. 编译AOSP源码5.1 准备编译环境source build/envsetup.sh lunch选择编译目标例如aosp_x86_64-eng用于x86_64架构的工程构建。5.2 开始编译make -j$(nproc) 21 | tee build.log-j$(nproc)会自动使用所有可用的CPU核心进行编译。编译过程可能需要几个小时具体取决于硬件性能。5.3 常见编译错误及解决方案错误1内存不足导致编译中断internal compiler error: Killed (program cc1plus)解决方案增加交换空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile错误2文件系统相关问题Read-only file system解决方案WSL2与Windows文件系统交互时可能出现此问题建议在WSL2内部文件系统中进行编译不要使用/mnt下的Windows目录。6. WSL2特有的优化技巧6.1 提升文件系统性能WSL2的9p文件系统性能较差建议将AOSP源码放在WSL2内部文件系统如~/aosp避免在Windows资源管理器中大量操作WSL2文件定期清理临时文件6.2 使用Windows Terminal优化体验Windows Terminal提供了多标签、分屏等实用功能可以显著提升开发效率。建议配置深色主题保护眼睛合适的字体大小如Cascadia Code 12ptWSL2集成6.3 内存管理技巧AOSP编译非常消耗内存可以关闭不必要的应用程序定期重启WSL2实例释放内存使用free -h监控内存使用情况# 监控内存使用 watch -n 1 free -h7. 编译后的操作7.1 运行模拟器编译完成后可以直接启动模拟器emulator7.2 刷入设备如果需要刷入实体设备adb reboot bootloader fastboot flashall -w7.3 增量编译修改源码后只需重新运行make -j$(nproc)7.4 清理编译产物如果需要重新编译make clobber8. 进阶技巧与建议8.1 使用ccache加速编译ccache可以缓存编译结果显著加快后续编译速度export USE_CCACHE1 export CCACHE_DIR/mnt/c/ccache ccache -M 50G8.2 选择性编译模块如果只需要编译特定模块make framework make services8.3 IDE集成可以使用Android Studio导入AOSP源码在AS中选择Import Project选择aosp目录下的development/tools/idegen运行. development/tools/idegen/idegen.sh8.4 调试技巧使用logcat查看系统日志使用adb shell进入设备shell使用strace跟踪系统调用adb logcat | grep -i error在实际项目中我发现最耗时的往往是源码同步阶段而非编译过程。使用国内镜像源可以显著提升下载速度。另外保持WSL2系统的整洁非常重要定期清理不必要的文件可以避免很多奇怪的问题。

更多文章