1. WSL 2环境准备与优化编译安卓ROM对系统环境有较高要求WSL 2相比传统虚拟机具有更好的性能表现。实测在相同硬件条件下编译速度比VMware快30%以上。以下是具体配置步骤1.1 启用WSL 2功能首先需要确保Windows版本为19041或更高。以管理员身份运行PowerShell执行dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启后设置WSL 2为默认版本wsl --set-default-version 2注意部分旧机型需在BIOS中开启虚拟化支持Intel VT-x/AMD-V具体按键因主板型号而异1.2 Ubuntu镜像安装与迁移微软商店安装Ubuntu 20.04 LTS后默认安装路径在C盘。由于编译需要100GB空间建议迁移到其他分区查询已安装的发行版名称wsl -l -v导出备份包示例到E盘wsl --export Ubuntu-20.04 E:\wsl\ubuntu.tar注销原实例后重新导入wsl --unregister Ubuntu-20.04 wsl --import Ubuntu-20.04 E:\wsl\ E:\wsl\ubuntu.tar --version 2设置默认用户替换 为安装时创建的用户名ubuntu2004.exe config --default-user username1.3 系统参数调优编辑WSL配置文件%USERPROFILE%\.wslconfig[wsl2] memory12GB # 建议为物理内存的70% processors8 # CPU线程数 swap4GB # 交换空间大小 localhostForwardingtrue关键参数说明memory直接影响并行编译任务数swap预防OOM错误processors建议等于物理核心数2. 编译环境配置2.1 基础依赖安装在Ubuntu中执行sudo apt update sudo apt install -y \ 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 python3 python3-pip常见问题处理遇到libncurses.so.5缺失时sudo apt install libncurses5较新系统可能需要兼容库sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.52.2 开发工具链配置安装JDK 8必须版本sudo apt install openjdk-8-jdk export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64配置Python环境sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1 pip3 install --user pyyaml设置ccache加速export USE_CCACHE1 export CCACHE_EXEC/usr/bin/ccache ccache -M 50G # 建议缓存大小3. 源码同步与设备树配置3.1 初始化代码仓库mkdir -p ~/mokee cd ~/mokee repo init -u https://github.com/MoKee/android -b mkq-mr1 --depth1技巧添加--depth1可减少下载量但会限制部分git操作3.2 设备特定配置以OnePlus 5Tdumpling为例需要额外添加设备树编辑.repo/manifests/default.xml在/manifest前添加project pathvendor/oneplus/dumpling nameMoKee/android_vendor_oneplus_dumpling clone-depth1 / project pathdevice/oneplus/dumpling nameMoKee/android_device_oneplus_dumpling groupspdk /同步代码建议夜间执行repo sync -j$(nproc) --no-tags --no-clone-bundle参数说明-j并行任务数建议等于CPU线程数--no-tags节省带宽--no-clone-bundle避免bundle校验失败4. 编译过程详解4.1 环境初始化source build/envsetup.sh breakfast dumpling # 选择对应设备如果设备未列出需检查设备树是否添加正确分支名称是否匹配mkq-mr1代码同步是否完整4.2 编译参数优化执行lunch前建议export MK_MAKEmake # 使用GNU Make替代Ninja更稳定 export WITH_SUtrue # 集成SuperSU然后选择构建类型lunch mokee_dumpling-userdebug4.3 核心编译命令启动完整编译mka bacon -j$(($(nproc)/2)) 21 | tee build.log参数解析-j并行任务数建议为CPU线程数50-70%21 | tee同时输出到屏幕和日志文件bacon魔趣特有的构建目标实时监控技巧watch -n 60 tail -n 20 build.log; ccache -s5. 常见问题排查5.1 编译中断处理内存不足症状g: internal compiler error: Killed解决减少-j参数值或增加swap空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile文件系统错误症状Read-only file system解决关闭WSL后执行wsl --shutdown5.2 特定错误修复PATH_OVERRIDE_SOONG错误export PATH_OVERRIDE_SOONG/bin:/usr/binPython版本冲突sudo update-alternatives --config python网络超时export REPO_URLhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo6. 输出与刷机编译完成后镜像文件位于out/target/product/dumpling/mk_dumpling-ota-eng.*.zip刷机建议进入Fastboot模式adb reboot bootloader使用TWRP刷入fastboot flash recovery twrp.img清除数据后刷入zip包实测数据i7-10700/32GB RAM完整编译时间3.5-4小时增量编译时间20-30分钟最终镜像大小1.2-1.5GB后续维护建议定期执行repo sync获取更新使用ccache -M调整缓存大小保留build.log用于问题追溯
WSL 2环境下安卓ROM编译环境配置与优化指南
1. WSL 2环境准备与优化编译安卓ROM对系统环境有较高要求WSL 2相比传统虚拟机具有更好的性能表现。实测在相同硬件条件下编译速度比VMware快30%以上。以下是具体配置步骤1.1 启用WSL 2功能首先需要确保Windows版本为19041或更高。以管理员身份运行PowerShell执行dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启后设置WSL 2为默认版本wsl --set-default-version 2注意部分旧机型需在BIOS中开启虚拟化支持Intel VT-x/AMD-V具体按键因主板型号而异1.2 Ubuntu镜像安装与迁移微软商店安装Ubuntu 20.04 LTS后默认安装路径在C盘。由于编译需要100GB空间建议迁移到其他分区查询已安装的发行版名称wsl -l -v导出备份包示例到E盘wsl --export Ubuntu-20.04 E:\wsl\ubuntu.tar注销原实例后重新导入wsl --unregister Ubuntu-20.04 wsl --import Ubuntu-20.04 E:\wsl\ E:\wsl\ubuntu.tar --version 2设置默认用户替换 为安装时创建的用户名ubuntu2004.exe config --default-user username1.3 系统参数调优编辑WSL配置文件%USERPROFILE%\.wslconfig[wsl2] memory12GB # 建议为物理内存的70% processors8 # CPU线程数 swap4GB # 交换空间大小 localhostForwardingtrue关键参数说明memory直接影响并行编译任务数swap预防OOM错误processors建议等于物理核心数2. 编译环境配置2.1 基础依赖安装在Ubuntu中执行sudo apt update sudo apt install -y \ 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 python3 python3-pip常见问题处理遇到libncurses.so.5缺失时sudo apt install libncurses5较新系统可能需要兼容库sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.52.2 开发工具链配置安装JDK 8必须版本sudo apt install openjdk-8-jdk export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64配置Python环境sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1 pip3 install --user pyyaml设置ccache加速export USE_CCACHE1 export CCACHE_EXEC/usr/bin/ccache ccache -M 50G # 建议缓存大小3. 源码同步与设备树配置3.1 初始化代码仓库mkdir -p ~/mokee cd ~/mokee repo init -u https://github.com/MoKee/android -b mkq-mr1 --depth1技巧添加--depth1可减少下载量但会限制部分git操作3.2 设备特定配置以OnePlus 5Tdumpling为例需要额外添加设备树编辑.repo/manifests/default.xml在/manifest前添加project pathvendor/oneplus/dumpling nameMoKee/android_vendor_oneplus_dumpling clone-depth1 / project pathdevice/oneplus/dumpling nameMoKee/android_device_oneplus_dumpling groupspdk /同步代码建议夜间执行repo sync -j$(nproc) --no-tags --no-clone-bundle参数说明-j并行任务数建议等于CPU线程数--no-tags节省带宽--no-clone-bundle避免bundle校验失败4. 编译过程详解4.1 环境初始化source build/envsetup.sh breakfast dumpling # 选择对应设备如果设备未列出需检查设备树是否添加正确分支名称是否匹配mkq-mr1代码同步是否完整4.2 编译参数优化执行lunch前建议export MK_MAKEmake # 使用GNU Make替代Ninja更稳定 export WITH_SUtrue # 集成SuperSU然后选择构建类型lunch mokee_dumpling-userdebug4.3 核心编译命令启动完整编译mka bacon -j$(($(nproc)/2)) 21 | tee build.log参数解析-j并行任务数建议为CPU线程数50-70%21 | tee同时输出到屏幕和日志文件bacon魔趣特有的构建目标实时监控技巧watch -n 60 tail -n 20 build.log; ccache -s5. 常见问题排查5.1 编译中断处理内存不足症状g: internal compiler error: Killed解决减少-j参数值或增加swap空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile文件系统错误症状Read-only file system解决关闭WSL后执行wsl --shutdown5.2 特定错误修复PATH_OVERRIDE_SOONG错误export PATH_OVERRIDE_SOONG/bin:/usr/binPython版本冲突sudo update-alternatives --config python网络超时export REPO_URLhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo6. 输出与刷机编译完成后镜像文件位于out/target/product/dumpling/mk_dumpling-ota-eng.*.zip刷机建议进入Fastboot模式adb reboot bootloader使用TWRP刷入fastboot flash recovery twrp.img清除数据后刷入zip包实测数据i7-10700/32GB RAM完整编译时间3.5-4小时增量编译时间20-30分钟最终镜像大小1.2-1.5GB后续维护建议定期执行repo sync获取更新使用ccache -M调整缓存大小保留build.log用于问题追溯