LInux Chromium源码编译
LInux下Chromium采用gn+ninja编译方式。老版的gyp方式已被抛弃,并且在默认情况下(is_clang 标志位为true),会使用clang编译器。
GN通过Chromium源码中的GN文件,在编译目录(如out/Default)下,生成build.ninja文件。ninja通过该文件,对Chromium进行编译。这里不关注gn和ninja,有兴趣的童鞋,可以参照下面的网址;
获取Chromium源码
- 获取源码请参照:https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md
- 由于网络原因,请使用VPN或者各种方法,尝试获取源码。这里使用的Chromium版本为67。
设置编译环境
- 设置depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# you depot_tools path
export PATH=$PATH:/xxx/xxx/xxx/depot_tools
# 解压命令 tar -zxvf xxxx.tar.gz
- Set up the build
cd ~/chromium/src
# 运行该命令,有些人的终端可能会退出(exit命令)
# 遇到此问题时,请注释调install-build-deps.sh中的exit命令
# 如果提示无法安装字体库,请按照提示,加入不安装字体库参数
. build/install-build-deps.sh
# 编译andorid版Chromium
. build/install-build-deps-android.sh
# 此步比较重要,请确认网络可以获取到所有内容(尝试VPN\代理\各种方法)
# 保证此步安装成功,切勿修改相关脚本或程序,跳出安装步骤,并耐心等待
gclient runhooks
编译
- 如果编译环境设置正确,此步基本不会遇到什么问题
- gen生成.ninja文件
# Linux
gn gen out/Default
gn gen out/Default --args='is_debug=false' (Releas版)
gn gen out/Default --args='target_cpu="x64" use_sysroot=false is_clang=false' (不使用clang编译)
# Android
gn gen out/Default --args='target_os="android" target_cpu="x86"'
gn gen out/Default --args='target_os="android" target_cpu="x64"'
gn gen out/Default --args='target_os="android" target_cpu="arm64"'
gn gen out/Default --args='target_os="android" target_cpu="arm"'
- ninja编译
#Linux
ninja -C out/Default (Chromium浏览器)
ninja -C out/Default content/shell:content_shell (Chromium content_shell)
#Android
ninja -C out/Default chrome_public_apk (Chromium浏览器)
ninja -C out/Default content_shell_apk (Chromium content_shell)
ninja -C out/Default system_webview_apk (Android Webview)
ninja -C out/Default webview_instrumentation_test_apk (Android Webview test apk)
- 运行Chrome浏览器或安装APK
# Linux运行浏览器
cd src
out/Default/chrome
# Android 安装apk
cd src/out/Default/apks
adb install chrome_public_apk
- 额外:Chromium编译对配置有一定要求,特别时在link阶段,低配置(如内存4G及以下)的机器,容易卡住。