WSL2环境下AOSP编译全攻略与性能优化 📅 2026/7/19 2:51:39 1. WSL2环境搭建与AOSP编译全攻略在Windows系统上搭建完整的AOSPAndroid Open Source Project开发环境一直是个头疼的问题直到WSL2的出现彻底改变了这个局面。我最近刚用WSL2完整编译了Android 13的源码整个过程比传统虚拟机方案流畅得多。下面就把我的实战经验完整分享给大家包括环境配置、源码下载、编译优化等关键环节。重要提示编译AOSP需要至少16GB内存和200GB磁盘空间建议使用SSD硬盘。我的配置是32GB内存1TB SSD编译Android 13耗时约3小时。1.1 WSL2安装与基础配置首先确保你的Windows版本是19041或更高然后在管理员权限的PowerShell中执行wsl --install -d Ubuntu-22.04安装完成后需要做几个关键配置内存限制调整在%USERPROFILE%\.wslconfig中添加[wsl2] memory12GB swap8GB processors8磁盘挂载优化建议将AOSP源码放在WSL2内部文件系统如/home/username/aosp不要放在Windows挂载目录如/mnt/c/否则性能会大幅下降。基础依赖安装sudo apt update sudo apt upgrade -y sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python31.2 AOSP源码下载实战AOSP源码下载主要使用repo工具管理这里有几个关键技巧初始化repo环境mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo配置git身份必须与Gerrit账号一致git config --global user.name Your Name git config --global user.email youexample.com初始化仓库以android-13.0.0_r41为例repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r41同步源码关键参数说明repo sync -j$(nproc) --current-branch --no-tags --no-clone-bundle-j$(nproc)使用全部CPU核心加速下载--current-branch只下载当前分支代码--no-tags不下载标签节省空间--no-clone-bundle避免bundle下载失败常见问题同步过程中可能出现error: Exited sync due to fetch errors这是网络问题导致的。解决方法是在repo sync命令后添加--fail-fast参数出错时会立即停止而不是继续尝试。1.3 编译环境准备与工具链配置AOSP编译依赖特定版本的JDK和工具链这是最容易出错的环节安装JDKAndroid 13需要JDK 11sudo apt install openjdk-11-jdk设置环境变量必须添加到.bashrcexport JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 export PATH$JAVA_HOME/bin:$PATH初始化编译环境source build/envsetup.sh lunch aosp_x86_64-eng # 选择x86_64模拟器镜像关键工具链说明Soong替代Make的新构建系统Ninja底层构建工具比Make更快Kati将Makefile转换为Ninja文件1.4 完整编译流程与优化技巧开始编译前建议先执行make clean clobber # 清除之前的构建产物正式编译命令make -j$(nproc) 21 | tee build.log几个提升编译效率的技巧使用ccache加速后续编译export USE_CCACHE1 export CCACHE_EXEC/usr/bin/ccache ccache -M 50G # 设置缓存大小内存优化如果遇到OOM内存不足可以export JACK_SERVER_VM_ARGUMENTS-Dfile.encodingUTF-8 -XX:TieredCompilation -Xmx4g ./prebuilts/sdk/tools/jack-admin kill-server ./prebuilts/sdk/tools/jack-admin start-server增量编译修改代码后只需重新运行make -j$(nproc)系统会自动检测变更。1.5 常见问题排查手册问题1repo sync卡住或失败现象同步过程中长时间无响应解决方案repo sync -j4 --fail-fast # 减少并发数或者使用清华镜像源repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r41问题2编译时报错Out of memory现象ninja: build stopped: subcommand failed.解决方案export JACK_SERVER_VM_ARGUMENTS-Xmx4g -Dfile.encodingUTF-8 -XX:TieredCompilation ./prebuilts/sdk/tools/jack-admin kill-server ./prebuilts/sdk/tools/jack-admin start-server问题3文件系统空间不足现象No space left on device解决方案# 查看WSL2磁盘使用 df -h # 清理临时文件 rm -rf out/target/product/generic/obj/APPS问题4Python版本冲突现象UnsupportedPythonVersionError解决方案sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 11.6 编译成果验证与使用编译完成后生成的系统镜像位于out/target/product/generic/主要文件system.img系统镜像ramdisk.img启动镜像userdata.img用户数据镜像启动模拟器emulator -show-kernel -no-snapshot如果要刷入真机如Pixel需要先解锁bootloaderfastboot flashing unlock fastboot flashall -w2. 高级技巧与性能优化2.1 WSL2磁盘性能优化默认的WSL2 ext4文件系统性能较差可以通过以下方式优化启用ext4的dir_index和has_journal特性sudo tune2fs -O dir_index,has_journal /dev/sdX sudo e2fsck -f /dev/sdX调整磁盘挂载参数 在/etc/fstab中添加/dev/sdb /mnt/aosp ext4 noatime,nodiratime,datawriteback,barrier0,nobh,errorsremount-ro 0 02.2 分布式编译方案对于大型项目可以使用分布式编译加速安装iceccsudo apt install icecc配置环境变量export USE_CCACHE1 export CCACHE_PREFIXicecc启动icecc守护进程iceccd --daemon2.3 自定义模块编译如果只需要编译特定模块如Settingsmake Settings生成的APK路径out/target/product/generic/system/priv-app/Settings/Settings.apk2.4 调试技巧使用gdb调试native代码gdbserver :5039 /system/bin/myapp打印内核日志adb shell dmesg查看系统属性adb shell getprop3. 维护与更新策略3.1 源码更新与同步定期更新代码并重新编译repo sync make -j$(nproc)3.2 分支管理技巧查看所有可用分支repo branches切换分支repo init -b android-14.0.0_r1 repo sync3.3 备份策略建议备份以下目录.repo/projects/保存所有git仓库信息out/编译产物可选重要修改的文件可以使用rsync增量备份rsync -avz --delete ~/aosp/ backup_server:/path/to/backup4. 硬件配置建议根据我的实测经验不同规模项目的硬件需求项目规模内存需求磁盘空间编译时间核心框架16GB150GB2小时完整系统32GB250GB4小时带内核调试64GB500GB8小时推荐配置CPUIntel i7/i9或AMD Ryzen 7/9内存32GB起步存储NVMe SSD 1TB系统Windows 11 22H25. 替代方案对比方案优点缺点适用场景WSL2原生集成性能好磁盘IO瓶颈日常开发物理Linux最佳性能需要双系统专业开发虚拟机隔离性好性能损耗大测试环境云主机资源弹性网络依赖团队协作我个人建议日常开发用WSL2正式构建用物理Linux或云主机。