编译Chromium Android WebView过程记录

系统:Ubuntu 18.04.5 LTS

 

git配置

git config --global user.name "zaooo"
git config --global user.email "12345678@qq.com"

克隆 depot_tools存储库:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

设置环境变量

设置后可以使用gclient命令

export PATH="$PATH:/绝对路径/depot_tools"
source ~/.bashrc

 

拉取 android 版本的源码

fetch --nohooks android

如果只拉取最新

fetch --nohooks --no-history android

如果中途断开,执行命令继续

gclient sync --nohooks

一定要自动完成checkout自动退出脚本
==================以下拉取完成,切换src目录==================


查看分支

git fetch --tags


切换版本分支同步(上面没有使用--no-history命令)

方式一
git checkout -b stable_77 tags/77.0.3865.90
gclient sync --with_branch_heads --nohooks --job 16
方式二
gclient sync --with_branch_heads -r 52.0.2743.100
gclient sync --with_branch_heads -r 83.0.4103.120


编译环境:

    sudo apt-get install openjdk-8-jdk
    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
    sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
    sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
    sudo apt-get install git-core gnupg flex bison gperf build-essential  
//sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
   //sudo apt-get install libc6-dev-i386
    sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
   //sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
    sudo apt-get install lib32z-dev ccache
    sudo apt-get install lib32ncurses5
    sudo apt-get install libncurses5

build/install-build-deps-android.sh

//如果切换版本需要重新执行以下命令安装依赖
gclient runhooks

 

安装无法定位  sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo vim /etc/apt/sources.list  //在行尾添加如下两行的内容
deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe



cpu对应
arm64-v8a          arm64
armeabi-v7a      arm
x86                         x86
x86_64                 x64

配置编译命令:

这里使用arm64 cpu类型配置,若编译其他,只需要改cpu类型

gn gen out/Release_arm64 --args='target_os="android" target_cpu="arm64" is_debug=false is_official_build=true enable_nacl=false is_chrome_branded=false use_official_google_api_keys=false enable_resource_whitelist_generation=true ffmpeg_branding="Chrome" proprietary_codecs=true enable_remoting=true

如果上面配置命令执行没反应,可以先创建项目输出路径,再配置

gn gen out/Release_arm64

创建完成输出:

Done. Made 13575 targets from 2257 files in 4392ms

此时可以手动修改配置文件:/src/out/Release_arm64/args.gn

target_os = "android"
target_cpu = "arm64"
is_debug = false
is_official_build = true
enable_nacl = false
is_chrome_branded = false
use_official_google_api_keys = false
enable_resource_whitelist_generation = true
ffmpeg_branding = "Chrome"
proprietary_codecs = true
enable_remoting = true

 

编译命令:

ninja -C out/Release_arm64/ system_webview_apk -j12

Release_arm64是输出路径,如果上面配置命令执行完成后,编译时不能修改,否则报错

官方android版本编译命令

# For L+ (21+) devices (if on N-P, see "Important Notes for N-P")
autoninja -C out/Default system_webview_apk

# For N-P (24-28) devices (not including TV/car devices)
autoninja -C out/Default monochrome_public_apk

# For Q+ (29+) devices
autoninja -C out/Default trichrome_webview_apk

 

编译过程经常会遇到一些报错,仔细看log输出还是很容易解决的

问题整理
git网络错误
git config --global http.proxy 'socks5://127.0.0.1:1089'
git config --global https.proxy 'socks5://127.0.0.1:1089'


跳过chromeos fonts检查
./build/install-build-deps.sh --no-chromeos-fonts


chromium编译google_play_services报错文件
google_play_service错误解决:
下载对应版本文件
如文件名:google_play_services_8487000.zip
查看google_play_service版本:/src/build/android/play_services/config.json文件
{
  "version_number": 8487000,
  "version_xml_path": "res/values/version.xml"
}

 

 

Error: 78>  //同步错误
78> ____ src/v8 at c5efc5092fabb0a45351c7b0031b14ed07d3c696
78>     You have unstaged changes.
78>     Please commit, stash, or reset.

解决

    删除删除 depot_tools并克隆新版本,而不更改其位置。

    rm -rf depot_tools
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

    清理 src通过递归访问每个项目, Chromium项目目录中的所有项目。 还要 检查 master分支 清洁后 :

  

export HM=$PWD
  find `pwd` -type d -name ".git" | sed  s/.git$//g |  \
    while read r; do cd $r; git reset --hard HEAD; git checkout master; done

 

    更新所有分支并 gclient sync再次

    git rebase-update && gclient sync

    如果一切顺利,则可以重建Chromium代码。

 

参考:

  (官方Android webview 编译说明)https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/aosp-system-integration.md
(官方)https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md
 (官方分支)https://chromium.googlesource.com/chromium/src.git
 (官方库,编译缺少的文件可以在此找到) https://maven.google.com/web/index.html


https://blog.csdn.net/a957666743/article/details/80061159

 

 

 

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值