zoukankan      html  css  js  c++  java
  • cef chromium 编译

    前言

    目前客户端引用了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:codeautomate
    c:codechromium_git
    c:codedepot_tools
    

    3.depot_tools

    下载 depot_tools.zip,解压到depot_tools文件夹

    4.automate-git.py

    下载 automate-git.py 放到 automate文件夹

    5.设置系统环境变量

    1.Path 新增一个路径c:codedepot_tools
    2.创建一个系统变量DEPOT_TOOLS_WIN_TOOLCHAIN 值0

    6.拉取代码

    C:Codechromium_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 ..automateautomate-git.py --download-dir=c:codechromium_git --depot-tools-dir=c:codedepot_tools --no-distrib --no-build --branch=3770
    

    设置好代理后 执行脚本,会自动拉取cef和chromium的源码
    总共20G左右

    7.为源码创建解决方案

    拉取代码后
    切换到目录 C:Codechromium_gitchromiumsrccef
    创建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:codechromium_gitchromiumsrcuildutil
    执行

    python lastchange.py -o LASTCHANGE 
    

    即可生成
    运行create.bat后,生成成功后

    8.执行编译

    编译之前,我先把cef的代码加一些洗发水(特效),解决一下鼠标滚轮关闭select元素的bug
    切换到C:Codechromium_gitchromiumsrc 编译chromium内核

    执行编译x64

    python -m pip install pywin32 安装pywin32库
    gn args outRelease_GN_x64 可用来配置编译参数
    gclient runhooks 更新编译时需要的依赖
    
    ninja -C outRelease_GN_x64 cef
    

    编译x86如法炮制

    编译时间如果用机械硬盘硬盘要4小时左右
    建议使用固态硬盘,我用我自己的笔记本 i7低压,估计也要不少时间,

    等编译完成了再来更新第9步

    9. 测试编译后的chromium 内核

    1.osr渲染模式下滚动鼠标不应该关闭html select element

    命令行传参 开启离屏渲染(osr)打开cefclient,

    C:Codechromium_gitchromiumsrcoutRelease_GN_x64> cefclient --multi-threaded-message-loop --off-screen-rendering-enabled --enable-gpu
    

    鼠标滚动不会关闭select了

    功能通过

    2.可以播放视频音频

    打开bilibili播放一个视频

    功能通过

    结语

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

    所以编译前至少留100GB左右的存储空间吧

  • 相关阅读:
    「2021.08 实战」Springboot wagon 2.x 部署线上(自动重启)
    Springboot 使用 CacheManager(缓存是储存到内存中去的,程序结束,缓存也没了)
    [Linux]在CentOS中安装Python3的方法
    [VS2015]关闭_CRT_SECURE_NO_WARNINGS警告
    STL源码剖析-智能指针shared_ptr源码
    透明网桥-消除循环功能
    MPEG-PS封装格式
    RTP timestamp与帧率及时钟频率的关系
    Pyhton @staticmethod
    Python @classmethod
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/12067895.html
Copyright © 2011-2022 走看看