Linux Chromium源码编译

LInux Chromium源码编译

LInux下Chromium采用gn+ninja编译方式。老版的gyp方式已被抛弃,并且在默认情况下(is_clang 标志位为true),会使用clang编译器。
GN通过Chromium源码中的GN文件,在编译目录(如out/Default)下,生成build.ninja文件。ninja通过该文件,对Chromium进行编译。这里不关注gn和ninja,有兴趣的童鞋,可以参照下面的网址;

  • 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及以下)的机器,容易卡住。

你可能感兴趣的:(Android)