cef chromium 编译
前言
目前客户端引用了cef sharp库来嵌入web页面
cef sharp是对cef (chromium embed framework)的c#封装
cef是对chromium内核的c++封装
什么是chromium?
chromium是google chrome内核的开源库
google chrome上开发的功能都会先放到chromium上实验
成功了才会合并到google chrome发布
所以chromium可以视为google chrome的预览版
由于专利原因
chromium的发布版不支持mp3, h264(视频编码
如果需要这些功能,需要自己重新编译
为了解决这个禅道bug(chromium离屏渲染下的鼠标滚轮bug,google chrome不是离屏渲染,wpf客户端上使用的cefsharp是),我打算重新编译cef,,顺便编译chromium内核以支持mp3和h264.
编译注意事项
1.官方编译文档
2.执行官方文档上的步骤需要禾斗学上网,(https, git,和DNS)
3.按照官方文档编译出来的chromium内核是不支持mp3 ,h264的,需要手动加一些编译变量
4.chromium内核分支版本不指定的话拉取到master的代码
编译步骤
1.安装vs2017
$PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
--add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^
--includeRecommended
安装完后,到应用程序里找到windows sdk 右键修改,先change,下一步,
把debugging tools for windows打钩,否则后面创建解决方案会失败

2.创建以下目录
c:\code\automate
c:\code\chromium_git
c:\code\depot_tools
3.depot_tools
下载 depot_tools.zip,解压到depot_tools文件夹
4.automate-git.py
下载 automate-git.py 放到 automate文件夹
5.设置系统环境变量
1.Path 新增一个路径c:\code\depot_tools
2.创建一个系统变量DEPOT_TOOLS_WIN_TOOLCHAIN 值0
6.拉取代码
在C:\Code\chromium_git创建update.bat,内容如下
set GN_DEFINES=use_jumbo_build=true ffmpeg_branding=Chrome proprietary_codecs=true
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
python ..\automate\automate-git.py --download-dir=c:\code\chromium_git --depot-tools-dir=c:\code\depot_tools --no-distrib --no-build --branch=3770
设置好代理后 执行脚本,会自动拉取cef和chromium的源码
总共20G左右
7.为源码创建解决方案
拉取代码后
切换到目录 C:\Code\chromium_git\chromium\src\cef
创建create.bat 内容如下
set GN_DEFINES=use_jumbo_build=true ffmpeg_branding=Chrome proprietary_codecs=true is_component_build=false
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
call cef_create_projects.bat
发布时记得设置is_component_build = false
编译时可能会出现找不到LASTCHANGE.committime这一文件,
在C:\code\chromium_git\chromium\src\build\util下
执行
python lastchange.py -o LASTCHANGE
即可生成
运行create.bat后,生成成功后

8.执行编译
编译之前,我先把cef的代码加一些洗发水(特效),解决一下鼠标滚轮关闭select元素的bug
切换到C:\Code\chromium_git\chromium\src 编译chromium内核
执行编译x64
python -m pip install pywin32 安装pywin32库
gn args out\Release_GN_x64 可用来配置编译参数
gclient runhooks 更新编译时需要的依赖
ninja -C out\Release_GN_x64 cef
编译x86如法炮制
编译时间如果用机械硬盘硬盘要4小时左右
建议使用固态硬盘,我用我自己的笔记本 i7低压,估计也要不少时间,

等编译完成了再来更新第9步
9. 测试编译后的chromium 内核
1.osr渲染模式下滚动鼠标不应该关闭html select element
命令行传参 开启离屏渲染(osr)打开cefclient,
C:\Code\chromium_git\chromium\src\out\Release_GN_x64> cefclient --multi-threaded-message-loop --off-screen-rendering-enabled --enable-gpu
鼠标滚动不会关闭select了

功能通过
2.可以播放视频音频
打开bilibili播放一个视频

功能通过
结语
我的电脑cpu是i7 低压,内存24GB
编译过程其实(两三个小时)*2就结束了
主要过程还是在拉代码
在编译的过程中内存有几次用光过
所以内存朋友小的朋友编译之前应该把虚拟内存设置多一点
编译完32位和64位,文件夹大小为

所以编译前至少留100GB左右的存储空间吧
cef chromium 编译的更多相关文章
- Ubuntu14.04 Chromium 编译
1.下载depot_tools: 首先安装 git-core: sudo apt-get install git-core 执行命令: git clone https://chromium.googl ...
- VS2010 Chromium编译
推荐使用Windows 7及以后系统,最少8G内存,预留出50G磁盘空间 搭建Visual Studio 2010开发环境 1.安装Visual Studio 2010专业版或者旗舰版 2.安装VS2 ...
- CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium
CEF中文教程(google chrome浏览器控件) -- CEF简介 2013-04-10 16:48 42928人阅读 评论(4) 收藏 举报 分类: CEF(2) 目录(?)[+] ...
- 如何在Windows上从源码编译Chromium (CEF3) 加入mp3支持
一.什么是CEF CEF即Chromium Embeded Framework,由谷歌的开源浏览器项目Chromium扩展而来,可方便地嵌入其它程序中以得到浏览器功能. CEF包括CEF1和CEF3两 ...
- 【chromium】cef是如何进行版本控制的?
搜了搜cef相关的文章,内容大多是 如何下载源码,如何编译,还有一些源码剖析,但是很少有人说明对cef进行开发时如何保存修改,使用git进行修改后的版本控制. cef是怎么做的? cef源码分为两个部 ...
- 【chromium】 cef源码下载
至少需要17GB的磁盘空间,不光有CEF源码,还会下载chromium源码.编译master分支的话,如果编译到chromium可能会需要windows sdk,windows sdk的版本可以参考下 ...
- windows平台编译CEF支持H264(MP3、MP4)超详细
编译目标(如何确定目标定版本请查看:BranchesAndBuilding) CEF Branch:4664 CEF Commit:fe551e4 Chromium Version:96.0.4664 ...
- 获取Chromium代码以及编译
获取和编译Chromium必须自备梯子,最好是购买一个稳定的V*P*N,喜欢折腾的可以使用类似shadowsock的代理(需要设置google文档). 英文版教程文档可以参考这个界面,下面详细说Win ...
- qt添加cef库嵌入web [转]
qt cef嵌入web 原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium ...
随机推荐
- SQL和HQL 区别浅析!!!
hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在hiber ...
- DS博客作业07——查找
1.本周学习总结 1.1思维导图 1.2.谈谈你对查找运算的认识及学习体会. 查找的内容和前两章树和图相比,要简单许多,在二次搜索树虽然也要用到树,但是也是很简单的树的操作,再加上查找的代码可以使用m ...
- 在windows系统搭建Flutter开发环境
开发环境搭建(Windows) 系统要求 设置FLutter镜像(非必须) 获取Flutter SDK Android开发环境设置 安装Flutter插件 系统要求 在Windows上要安装并运行Fl ...
- 框架 | Spring面试题总结
1.什么是Spring? Spring是一个开源的Java EE开发框架.Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性.Sprin ...
- HttpURLConnection获取数据
使用步骤: 1.创建Url 2.用Url打开连接 3.设置请求参数 4. 获取响应状态码 2xxx 请求成功 3xxx重定向 4xxx资源错误 5xxx服务器错误 5.获取服务器返回的二进制输入流 6 ...
- a lot of attention under the hood
Because one of the original goals of the Node.js project was to allow developers to easily build app ...
- JPA,Hibernate,Spring Data JPA之间的关系
什么么是JPA? 全称Java Persistence API(JAVA对象持久化API),可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1 ...
- Fiddler抓取https设置详解(图文)
本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各种奇葩问题,特此分享! 声明:本文为原创文章,转载请注明来源:https: ...
- mariadb数据库(1)
一.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数 ...
- java文件上传系统
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...