windows 平台wsl2 编译 chromium android 版本
文章目录
配置网络环境
因chromium代码仓库在:https://chromium.googlesource.com/chromium/src,因国内不能顺畅的访问,需在编译之前需要把网络环境配置好。
windows wsl2 安装请按照微软官方教程:https://learn.microsoft.com/en-us/windows/wsl/install
配置网络工具示例(自行查找相关网络工具)
点击首选项然后选择入站设置,主要配置如下图:
配置 windows 入站规则
为了防止不必要的麻烦,务必直接关掉电脑防火墙设置。 \color{#ff0000}{为了防止不必要的麻烦,务必直接关掉电脑防火墙设置。} 为了防止不必要的麻烦,务必直接关掉电脑防火墙设置。
- 选择高级设置
- 第二步 创建入站规则
配置 WSL
在WSL命令行窗口输入以下指令:
- 获取WSL宿主机IP
cat /etc/resolv.conf|grep nameserver|awk '{print $2}'
- 设置环境变量(172.17.176.1 替换为上面的指令获取的IP)
export http_proxy=172.17.176.1:8889
export https_proxy=172.17.176.1:8889
至此网络已经准备完成,接下来开始编译源码。
编译Chromium源码
建议存储空间剩余使用100GB以上。
1. 配置depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
需要加速的可以使用我在 G i t e e 创建的国内源 \color{#ff0000}{需要加速的可以使用我在Gitee创建的国内源} 需要加速的可以使用我在Gitee创建的国内源
https://gitee.com/Zy.Elite/depot_tools.git
2. 设置环境变量
假设depot_tools下载到/root/路径下则
export PATH="$PATH:/root/depot_tools"
3. 获取Chromium源码
注意事项,请勿增加 --no-history 这个标签,增加此标签,在编译时期会有大量未知错误无法解决,亲测按照网上抄来抄去的教程无法解决,浪费了大量的时间(时间就是金钱,流量什么的都是浮云)
mkdir ~/chromium && cd ~/chromium
fetch --nohooks android
4. 同步编译环境依赖
cd src
echo "target_os = [ 'android' ]" >> ../.gclient
gclient sync
5. 安装snapcraft
因wsl中自带的snap服务无法使用,在安装编译环境前,需要先自行安装snapcraft,wsl务必执行此选项,linux 可跳过
service snapd stop
apt purge snapd
apt install snapd
apt install daemonize
daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
验证snap服务是否正常使用
snap version
执行指令显示以下内容,则snap服务安装成功。
6. 安装额外的构建依赖项
可能是因为网络原因字体下载失败,增加–no-chromeos-fonts跳过安装
build/install-build-deps.sh --android --no-chromeos-fonts
7. 运行hooks
gclient runhooks
8. 设置编译参数
gn args out/Default
执行指令后会打开一个文本编辑界面,输入以下内容:
target_os = "android"
target_cpu = "arm64" # armeabi-v7a 指定为 arm
v8_symbol_level=0
blink_symbol_level=0
enable_nacl = false
symbol_level = 0
#如果is_component_build为true则是动态库链接,否则为静态库链接
is_component_build = true
treat_warnings_as_errors = false
dcheck_always_on = false
is_java_debug = false
is_debug = false
#配置 devtools_skip_typecheck 跳过 TS 检查,构建更快
devtools_skip_typecheck=true
9. 编译chromium代码
autoninja -C out/Default chrome_public_apk
10. 更新chromium内核
git rebase-update
gclient sync
生成 Android Studio项目工程
build/android/gradle/generate_gradle.py --output-directory out/Default
执行完毕后生成out/Default/gradle目录,导入android studio 即可。
结语
网上有很多编译指南的教程,但大多数都是抄袭,当遇到某些问题时几乎无解。所以希望此篇文章可以让你编译通过,有疑问随时联系我。