一、Windows10 安装 WSL2
参考: https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
1. 开启虚拟化和Linux on Windows
方法一:
控制面板 ——> 程序 ——> 程序和功能 ——> 启用或关闭 Windows 功能
点击确定以后等待安装完成,重启系统
方法二:
用管理员方式运行 PowerShell
# 启用 WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重启
shutdown -r -t 00
2. 安装 Ubuntu20.04
- 下载安装 Linux 内核更新包
- 开启WSL2,管理员方式运行 PowerShell
# 启用WSL2
wsl.exe --set-default-version 2
# 更新WSL为最新版本
wsl.exe --update --web-download
- 给Linux系统分配大内存
# 记事本打开 %USERPROFILE%/.wslconfig 修改如下:
[wsl2]
memory=32GB
swap=16GB
3. 安装Ubuntu20.04
方法一:参考官网下载
Ubuntu20.04 LTS, 下载地址:https://aka.ms/wslubuntu2204
方法二:Microsoft Store 下载
安装完,设置用户名密码即可。
二、移动 Ubuntu20.04 到非系统盘
WSL默认安装在系统盘,有时候系统盘是一个单独的固态硬盘,不太大,防止把系统盘撑爆,建议移动到非系统盘
# 首先把所有Linux系统都关闭
wsl.exe --shutdown
# 查看当前系统列表
wsl.exe -l -v
# (根据上面的显示结果) 导出系统
wsl.exe --export Ubuntu-20.04 D:\ubuntu2004.tar
# 等导出完成,删除系统
wsl.exe --unregister Ubuntu-20.04
# 再将tar导入
# wsl.exe --import <导入名称> <安装目录,非系统盘> <上面导出的tar>
wsl.exe --import Ubuntu-20.04 D:\Ubuntu2004 D:\ubuntu2004.tar
# 导入完成,可以删除tar文件了
三、下载 Android13 源码
1. 确定下载目录
如果下载的源码目录不是虚拟机里面的,在NTFS文件系统需要特殊设置,打开文件系统的大小写敏感设置
# 假如把源码下载在 D:\android-13.0.0_r12
mkdir D:\android-13.0.0_r12
fsutil.exe file setCaseSensitiveInfo D:\android-13.0.0_r12 enable
2. 安装同步工具
# repo 是为了管理多个 git 库而开发的,需要 git 作为基础
sudo apt update
sudo apt-get install 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
配置 git
git config --global user.email “you@example.com”
git config --global user.name “Your Name”
安装python3
sudo apt install -y python3
下载repo
# 网上下载都是~/bin/repo,如果没有其Google项目,直接下载到 /usr/bin/repo 即可,不需要设置环境变量
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > /usr/bin/repo
打开repo修改清华源:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
vim /usr/bin/repo
同步代码
cd /mnt/d/android-13.0.0_r12
# 如果上面没改repo,这里可以设置环境变量
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
# 初始化项目
repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r12
# 同步代码
repo sync -j8
等待同步完成(第一次需要5、6个小说)
四、编译系统
安装必要库和工具
sudo apt-get install -y libx11-dev libreadline6-dev libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev
sudo apt-get install -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y git-core gnupg flex bison gperf build-essential
sudo apt-get install -y zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install -y libc6-dev-i386
sudo apt-get install -y lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install -y libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install -y lib32z-dev ccache
sudo apt-get install -y libssl-dev
初始化编译系统
source build/envsetup.sh
选择编译系统
lunch sdk_pc_x86_64-userdebug
此时,编译会遇到各种错误,比如:
15:13:35 ************************************************************
15:13:35 You are building on a machine with 13.7GB of RAM
15:13:35
15:13:35 The minimum required amount of free memory is around 16GB,
15:13:35 and even with that, some configurations may not work.
15:13:35
15:13:35 If you run into segfaults or other errors, try reducing your
15:13:35 -j value.
15:13:35 ************************************************************
15:13:39 Failed to listen for path logs: listen unix out/.path_interposer_log: bind: operation not supported
#### failed to build some targets (04:41 (mm:ss)) ####
内存大小只是警告,问题在 NTFS 文件系统下使用 unix file socket 有问题,需要把这些中间文件放在ext文件系统上,所以需要修改
D:\android-13.0.0_r12\build\soong\ui\build\config.go
现在可以开始编译了
make -j8
编译时会卡在 build.ninja 一个多小时,电脑性能不好,会卡两个多小时(该文件编译完是7G的文本文件)