前言

目前客户端引用了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. springboot 配置跨越访问

    import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.H ...

  2. 预处理、const、static与sizeof-#pragma pack的作用

    1:有如下代码: #include <iostream.h> #pragma pack(1) struct test{ char c; short s1; short s2; int i; ...

  3. 树形dp(灯与街道)

    https://cn.vjudge.net/contest/260665#problem/E 题意: 给你一个n个点m条边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮.每盏灯将照亮以它为一个 ...

  4. Android 美团Robust热更新 使用入门

    Android热更新方案Robust 相信很多人都认识了解过 热修复.热更新.热补丁(对于这个技术也没有特别标准的一种叫法,下面我统一叫热更新),之后的一年里,各种热更新方案如雨后春笋般出现,比较耳熟 ...

  5. 发布机制-灰度发布-例子:QZone

    ylbtech-发布机制-灰度发布-例子:QZone QZone是另外一个采用灰度发布的例子.大家都知道,QZone在过去的一年中改进是巨大的,从以前慢悠悠的老爷爷变成了一个充满青春活力的小伙子.其中 ...

  6. 一百零八:CMS系统之封装权限判断功能

    在用户模型下定义属性和方法,用于判断用户的权限 @propertydef permissions(self): """ 返回用户拥有的所有权限 ""& ...

  7. Chrome F12 谷歌开发者工具解析

    一.工具简单介绍 F12可用于网站界面.性能测试,bug定位等 以 www.baidu.com 为例: Elements:查看页面元素属性(多用于自动化元素定位) Console:记录日志信息(用于定 ...

  8. guns系统部署方式及常见问题

    项目框架:guns 开发IDE:Idea 2018.1 两种打包方式:war 和jar. 1.正常打包的姿势 1.1按照下图修改为你想到打包的方式. ​ 1.2 执行打包 ​​ clean packa ...

  9. 安装mistral

    1.安装mistral安装包 yum -y install openstack-mistral-api.noarch openstack-mistral-engine.noarch openstack ...

  10. 安装nova

    在控制节点上执行 controllerHost='controller' controllerIP='172.31.240.49' MYSQL_PASSWD='m4r!adbOP' RABBIT_PA ...