Chrom 嵌入式框架
背景
最近因为项目需要使用嵌入式浏览器,IE内核对操作系统依赖性太强,对H5的支持不是很好。 CEF是一个基于chromium项目的嵌入式浏览器开源框架。 已经应用于很多产品,并且有比较完善的峰会和官方支持。 是该项目的最佳选择。 由于客户端需要运行在Windows XP系统上,因此Chome浏览器在49版本之后(对应CEF3版本2623,下面提到的CEF均指CEF3)不再支持Win7以下的系统。 CEF二进制发布官网不包含2623版本,但是CEF提供了源码发布,官方也给出了源码编译文档。 虽然根据官方文档已经进行了改进,但是CEF 2623版本的编译过程中仍然存在很多问题。 在此记录一下,供用户参考。
准备编译环境
注意:
由于个人激励(你知道),源代码无法同步。 推荐使用VPN。另外,CEF基于chromium,源码比较大,同步源码时间较长,请耐心等待; 安装VS2015u3时,默认不会安装Win10.0.14393 SDKwindows如何编译源码,所以需要自动勾选; 将执行环境添加到环境变量中; 下载CEF源代码
下载CEF源码之前,先了解一下手动创建脚本automate-git.py,并在命令行执行:
python automate-git.py -h
可以看到源码同步、编译、发布等相关选项,每个选项都有相关说明。 默认情况下,源码同步后,会手动创建并发布二进制包。 由于同步源码和建立时间都比较长,所以将同步源码和编译源码分开。 我们先看一下目录结构:
CEF
| --- 2623
automate
| --- automate-git.py
| --- sync_cef_2623.bat
| --- build_cef_2623.bat
阐明:
以上目录结构是个人喜好。 没有必要这样设置。 关键是要正确设置automate-git.py的参数。 sync_cef_2623.bat用于同步CEF 2623分支源码,其内容如下:
set CEF_USE_GN=0
set GYP_DEFINES=buildtype=Official
set GYP_GENERATORS=ninja,msvs-ninja
set GYP_MSVS_VERSION=2015
set CEF_ARCHIVE_FORMAT=tar.bz2
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
python automate-git.py --download-dir=..CEF2623 --branch=2623 --no-build --no-distrib
将以上内容写入sync_cef_2623.bat脚本中。 在保证上述环境设置正确的前提下,在命令行运行sync_cef_2623.bat同步源码。 源码有十几G,如果网络不稳定的话需要很长时间。
以下是一些参数说明。 更多参数请运行 pythonautomate-git.py -h 查看,
笔记:
如果VPN不稳定windows如何编译源码,可能会时不时地中断,导致脚本运行不正确。 只需再次运行该脚本即可。 源码主要有三部分,depot_tools源码、cef源码和chromium源码。 如果发现对应部分的源码已经同步,可以单独使用 --no-depot-tools-update, --no-cef-update, --no-chromium-update 不更新代码的相应部分。 自动创建脚本下载源码时没有进度提示。 比如下载chromium/src目录会花费很长时间,并且仍然会提示still running on src...,请耐心等待。编译CEF源码
下载源代码后,就可以编译了。 编译2623版本时,可能会遇到一些编译错误。 如果你不想自己尝试这个编译错误,请参考下一节的编译错误解决方案。 使用脚本build_cef_2623.bat编译源代码,其内容如下:
set CEF_USE_GN=0
set GYP_DEFINES=buildtype=Official
set GYP_GENERATORS=ninja,msvs-ninja
set GYP_MSVS_VERSION=2015
set CEF_ARCHIVE_FORMAT=tar.bz2
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
python automate-git.py --download-dir=..CEF2623 --branch=2623 --no-update --no-depot-tools-update --verbose-build --force-build --no-debug-build --force-distrib
将以上内容写入build_cef_2623.bat脚本中,release版本即可编译发布。 以下是一些参数说明:
此外,还有其他编译参数可供选择,请运行 pythonautomate-git.py -h 查看。
修复编译错误
编译过程中,可能会遇到如下编译或链接错误,以我的CEF源代码位置e:reposcef2623为例:
编译错误1
如果您使用的系统区域设置是中国,您可能会遇到一些与字符集相关的编码错误。 您需要修改系统区域设置。 Win10系统下改动如下。 其他系统请自行google:
控制面板 > 时钟、语言和区域 > 区域 > 管理 > 更新系统区域设置...
变成:
英语(美国)
编译错误2
e:reposcef2623chromiumsrcgoogle_apisgaiaoauth2_token_service.cc(313):
错误 C2220:警告被视为错误 - 未生成“对象”文件
警告 C4334:'