前言

目前客户端引用了cef sharp库来嵌入web页面

cef sharp是对cef (chromium embed framework)的c#封装

cef是对chromium内核的c++封装

什么是chromium?

chromiumgoogle 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 编译的更多相关文章

  1. Ubuntu14.04 Chromium 编译

    1.下载depot_tools: 首先安装 git-core: sudo apt-get install git-core 执行命令: git clone https://chromium.googl ...

  2. VS2010 Chromium编译

    推荐使用Windows 7及以后系统,最少8G内存,预留出50G磁盘空间 搭建Visual Studio 2010开发环境 1.安装Visual Studio 2010专业版或者旗舰版 2.安装VS2 ...

  3. CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium

    CEF中文教程(google chrome浏览器控件) -- CEF简介 2013-04-10 16:48 42928人阅读 评论(4) 收藏 举报  分类: CEF(2)    目录(?)[+]   ...

  4. 如何在Windows上从源码编译Chromium (CEF3) 加入mp3支持

    一.什么是CEF CEF即Chromium Embeded Framework,由谷歌的开源浏览器项目Chromium扩展而来,可方便地嵌入其它程序中以得到浏览器功能. CEF包括CEF1和CEF3两 ...

  5. 【chromium】cef是如何进行版本控制的?

    搜了搜cef相关的文章,内容大多是 如何下载源码,如何编译,还有一些源码剖析,但是很少有人说明对cef进行开发时如何保存修改,使用git进行修改后的版本控制. cef是怎么做的? cef源码分为两个部 ...

  6. 【chromium】 cef源码下载

    至少需要17GB的磁盘空间,不光有CEF源码,还会下载chromium源码.编译master分支的话,如果编译到chromium可能会需要windows sdk,windows sdk的版本可以参考下 ...

  7. windows平台编译CEF支持H264(MP3、MP4)超详细

    编译目标(如何确定目标定版本请查看:BranchesAndBuilding) CEF Branch:4664 CEF Commit:fe551e4 Chromium Version:96.0.4664 ...

  8. 获取Chromium代码以及编译

    获取和编译Chromium必须自备梯子,最好是购买一个稳定的V*P*N,喜欢折腾的可以使用类似shadowsock的代理(需要设置google文档). 英文版教程文档可以参考这个界面,下面详细说Win ...

  9. qt添加cef库嵌入web [转]

    qt cef嵌入web 原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium ...

随机推荐

  1. SQL和HQL 区别浅析!!!

    hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在hiber ...

  2. DS博客作业07——查找

    1.本周学习总结 1.1思维导图 1.2.谈谈你对查找运算的认识及学习体会. 查找的内容和前两章树和图相比,要简单许多,在二次搜索树虽然也要用到树,但是也是很简单的树的操作,再加上查找的代码可以使用m ...

  3. 在windows系统搭建Flutter开发环境

    开发环境搭建(Windows) 系统要求 设置FLutter镜像(非必须) 获取Flutter SDK Android开发环境设置 安装Flutter插件 系统要求 在Windows上要安装并运行Fl ...

  4. 框架 | Spring面试题总结

    1.什么是Spring? Spring是一个开源的Java EE开发框架.Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性.Sprin ...

  5. HttpURLConnection获取数据

    使用步骤: 1.创建Url 2.用Url打开连接 3.设置请求参数 4. 获取响应状态码 2xxx 请求成功 3xxx重定向 4xxx资源错误 5xxx服务器错误 5.获取服务器返回的二进制输入流 6 ...

  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 ...

  7. JPA,Hibernate,Spring Data JPA之间的关系

    什么么是JPA? 全称Java Persistence API(JAVA对象持久化API),可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1 ...

  8. Fiddler抓取https设置详解(图文)

    本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各种奇葩问题,特此分享! 声明:本文为原创文章,转载请注明来源:https: ...

  9. mariadb数据库(1)

    一.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数 ...

  10. java文件上传系统

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...