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

时间:2023-03-08 21:40:41
CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium
2013-04-10 16:48 42928人阅读 评论(4) 收藏 举报
CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium 分类:
CEF(2) CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium

目录(?)[+]

官方主页:  点击打开链接

CEF简介:

嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件。CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去。

它的设计思想政治就是易用且兼顾性能。CEF基本的框架包含C/C++程序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,JavaScript对象以及javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等,并且可以跟Google Chrome浏览器一起,支持高性能和Html5 技术,

CEF指南:

指南:

首先把这段代码插入到窗口的创建函数里面去:

  1. // Create an instance of our CefClient implementation. Various methods in the
  2. // MyClient instance will be called to notify about and customize browser
  3. // behavior.
  4. CefRefPtr<CefClient> client(new MyClient());
  5. // Information about the parent window, client rectangle, etc.
  6. CefWindowInfo info;
  7. info.SetAsChild(...);
  8. // Browser initialization settings.
  9. CefBrowserSettings settings;
  10. // Create the new browser window object asynchronously. This eventually results
  11. // in a call to CefLifeSpanHandler::OnAfterCreated().
  12. CefBrowser::CreateBrowser(info, client, "http://www.google.com", settings);

这段代码你可以在[test]文件夹下面的cefclient工程里面看到。

文件结构:

include -- 这个文件夹里面放CEF客户应用程序所需的头文件

libcef -- 此文件夹存放CEF的静态库

libcef_dll -- 此文件夹CEF的动态拉链库

tests -- 此文件夹存放测试的例子

cefclient -- 一个简单的客户程序

unittests --  CEF界面单元测试

浏览器事件:

   应用程序通过调用CefBrowser和CefFrame的方法来处理浏览器控件事件:
       a.Back, Forward, Reload and Stop Load。控件浏览器的导航
       b.Undo, Redo, Cut, Copy, Paste, Delete, Select All.控件目标框架的选取
       c.Print。打印目标框架
       d.Get Source。以字符串的形式来获取目标框架的HTML源码
       e.View Source. 用缓存文件来保存目的框架的HTML源码,并且用系统默认的文本查看器打开
       f.Load URL.加载特定的URL到目标框架
       g.Load String. 加载一个特定的字符串到目标框架,通过一个随意指定的虚拟URL
       h.Load Stream. 加载一个特定的二进制文件到目标框架,通过一个随意指定的虚拟URL
       i.Load Request, 加载一个特定的请求到目标框架
       j.Execute JavaScript: 在目标框架里面执行一个特定的Javscript命令
       k. Zoom。 缩放特定框架的网页内容

插入网景风格插件:

      CEF支持插入网景风格的插件,插入插件的动作跟正常插入基本动态链接库的插件一样,但是做为一个单独的Dll,必须通过容器来创建,并且要用CefRegisterPlugin()这个函数来注册到系统里面去。你要调用这个函数的话,你就得包含cef_nplugin.h这个头文件。

JavaScript扩展:

    CEF支持能连接本地程序源代码的Javascript扩展,演示程序你可以去看cef_v8.h进而的CefRegisterExtension()方法,还有CEFClient下面的演示例子,你如果想得到更多的信息,可以点下面的链接:  JavaScriptIntegration

用户计划:

    CEF支持注册和处理像myscheme://mydomain一样的用户计划,你可去查看cef_scheme.h里面的CefRegisterScheme()和Scheme Handler测试单元,得到详细的说明。

框架总览:

   所有的文件前缀都是Cef

框架的建立和销毁:

   CEF的UI消息寄宿在一个框架建立的单线程中,用户只负责用CefInitialize()和CefShutdown()来建立和销毁这个线程,但是你如果设置了CefSettings.multi_threaded_message_loop, 这个UI消息循环也可以运行在一个单独的线程里面。

引用计数:

   所有的框架数都从CefBase这个基类继承而来,并且所有的实例指针都用CefRefPtr智能指针来管理,可以用AddRef()和Release()函数来自动处理引用计数。

平台无关:

   CEF框架被设计成平台无关的,现在它支持Windows,Mac os-x和Linux,为了无缝地支持多种平台,框架定义了一系列的平台无关的接口和类型定义。

框架接口:

      CefBrowser是主要的浏览器窗口类,可以用静态的函数CreateBrowser() 和CreateBrowserSync() 来创建一个新的浏览器窗口。
      CefFrame 代表一个浏览器窗口的框架,每个浏览器窗口有一个顶层的主框架,而这个主框架可以用GetMainFrame() 方法得到。
      CefClient是主浏览器窗口的代表接口,这个接口做为参数传递给CreateBrowser()
      CefRequest 代表URL,方法,发送数据和头文件等这样的请求。
      CefSchemeHandleFactory 类是被用来处理像myscheme://mydomain类似客户计划的请求

CefReadHandler和CefWriteHandle是一个读写数据的简单接口。

      CefV8Handler,CefV8Value和CefV8Context是被用来创建和访问JavaScript对象。

以上内容是Cef的简介,后面我将翻译怎么编译并生成一个用CEF控件来创建的一个简单浏览器!

2013-04-11 10:47 16483人阅读 评论(14) 收藏 举报
CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium 分类:
CEF(2) CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium

目录(?)[+]

 

这部分讲解CEF的分支信息并介绍下载编译和打包源代码

背景:

      CEF项目是做为Chromium的扩展项目而存在的,CEF跟Chromium一样地维护两个版本,开发版和发布版。CEF源代码既可以手动编译,也可以用工具自动编译

发展:

     CEF项目在不断的发展中,你可以从这里看到整个项目的文件trunk,因为当前的版本紧跟Chromium,所以不推荐拿当前的版本来开发发布版的产品。下面的链接可以用来下载CEF的开发版源码:
     remind:你点开上面的链接时,你会发现这是一个svn工程的目录,如果以前是用VSS的,你可能觉得svn很陌生,不要尝试一个一个地去下载里面的文件。这里有个简单的方法可以下载整个文件夹:先下载一个TortoiseSVN,下完后安装,但是你不会看到有什么的TortoiseSVN的运行程序,因为它是内嵌到Windows里面的,你应该在任意的盘符下面创建一个空的文件夹,右键点击这个文件夹,点击菜单项【TortoiseSVN】->【export】,在URL文件框里面输入上面的链接后点确定,然后现在个工程文件都会下下来。

发布版:

     CEF随着Chromium发布版也提供一个最新的发布版,推荐用户用发布版本做为开发产品的环境,原因有如下几点:
     1.二进制的CEF是用特定的Chromium发布版编译出来的
      2.发布版的CEF/Chromium经过了更好的测试,而且更加适合开发发布版的应用程序
      3.发布版更加稳定
      4.CEF发布版可以包含必要的Chromium/WebKit版本
      5.CEF以后的更新不会干扰用户的发布计划
CEF版本号有如下形式:X.Y.Z,其中X是CEF主版本号,Y是发布版版本号,而Z是CEF校对号,有关CEF和Chromium版本更详细的内容,你可以去include/cef_version.h里面找到,下面的表格列出当前的CEF发布版本:
发布版本 Chromium版本 CEF1支持性 CEF3支持性
963 17
1025 18
1084 19
1180 21
1271 23
1364 25
1453 26
你可以在下面的链接中下载发布版的CEF, 其中YYYY是发布版的版本号:
这里值得注意的是版本963和1025是只包含有CEF1的源代码,要想了解CEF发布版的版本号怎么来的,你可以点击旁边这个链接: here

编译源代码:

    当前支持在Windows,Mac OS-X和Linux环境下编译源代码,而要想编译成功,你的电脑必须至少有4GB的系统内存(因为我用的Windows,所以在Mac或Linux环境下的要求我就没有翻译了)。
    在编译Chromium和CEF源码之前,你必须配置好你的编译环境:

1.为你的操作系统和开发环境安装必要的包:

    Windows环境下点击右边的链接: http://www.chromium.org/developers/how-tos/build-instructions-windows(这个我将在下一章中给出译文)
    配置好操作系统和编译环境以后,还要用旁边的链接去下载TortoiseSVN工具: http://sourceforge.net/projects/tortoisesvn/files/1.6.16/Application/

2.配置环境可以影响GYP

   CEF目前还不支持组件开发
   Windows - 如果你的操作系统里面安装了多个Virual Studio,你可以设置环境变量GYP_MSVS_VERSION为一个适当的值,如果你想用VS2008来编译工作,你应该把这个值设成2008,如果你想用Vs2010 Express来编译工程,那你就应该把这个环境变量设成2010e, 如果是别的Visual Studio版本,那你就要去Chomium帮助文档去查找更详细的信息,但是估计也应该是同一个套路,假如你是vs2005,那肯定就是设成2005了。

自动的方法:

   CEF提供工具,用来自动下载、编译、打包Chromium和CEF源代码,这个方法对开发版和发布版是同样有用,你可以按下面的步骤来完成自动操作:

1.下载自动工具 automate.py:

   用SVN checkout下面的URL:
http://chromiumembedded.googlecode.com/svn/trunk/cef1/tools/automate /path/to/automate

2.运行automate.py脚本:

   在任何合适的时间,你可以运行automate.py这个脚本(如每周每天每次CEF提交的时间),并使用你想要的CEF版本。
python /path/to/automate/automate.py --download-dir=/path/to/download --url=http://chromiumembedded.googlecode.com/svn/branches/1084/cef1
    如果这个操作成功了,一个二进制形式的包会被创建在  /path/to/download/chromium/src/cef/binary_distrib
如果你要想查找完整的使用介绍,点下面的链接: automate.README.txt 
   这个方法也被完美地整合到了一些自动编译系统如 TeamCity
(译完这段我感到浑身冷汗,因为什么TeamCity、TortioseSVN...全都一无所知,想想从业也三四年了,却离it这条路越走越远,在上个公司呆的两年多完全是封闭的两年多,天天整些CAD,用写好的API,做些重复的工作,什么新的技术都没学到,反而把老本都蚀完了,现在是时候奋起直追了。但转念一想,我还能再追几年,以我的年纪我还能追几年? 学什么走哪块,才能让我虽不说蒸蒸日上但却能有口盒饭吃呢?)

手动下载:

    Chromium和CEF可以手动下载和编译,但这更加复杂,所以不向所有用户推荐。

开发版:

    下面这些下载的介绍仅适合CEF1&CEF3开发版。
     1.安装depot_tools并且下载Chromium源代码,你可以按照这个链接的内容来做http://dev.chromium.org/developers/how-tos/get-the-code,也可以按照下面的四个步骤来做,但是为了避免一些潜在的问题,你最好设置chromium和depot_tools的下载目录尽可能的短,并且不要包含空格和特殊字符。
     A.  装一个1.6.x版本的SVN端,并且加到你的PATH里面去
     B. 通过SVN来下载depot_tools
  svn co http://src.chromium.org/svn/trunk/tools/depot_tools

C. 增加depot_tools的目录到你的PATH,在Windows下depot_tools的路径应该要放在TortoiseSVN的前面

    D. 创建一个Chromium签出目录(例如,/path/to/chromium),并且配置gclient如下:
cd /path/to/chromium
gclient config http://src.chromium.org/chrome/trunk/src

remind:  上面这段你只要复制到cmd里面去运行就可以了

    2. 在CEF的顶层目录下查看CHROMIUM_BUILD_COMPATIBILITY.txt,并找到你需要的Chromium版本,这可能会发生改变,因为CEF是随着最新版本的Chromium改变而改变的
   3. 更新Chromium到合适的版本
cd /path/to/chromium
gclient sync --revision src@chromium_revision --jobs 8 --force

4. 下载CEF源代码到"cef"文件夹,而且这个文件夹必须包含在Chromium的"src"文件夹目录下,你最好只下载CEF1或CEF3而不要两者都下,假设你的Chromium源代码下载在"/path/to/chromium/src",那么你的CEF源代码就应该放在"/path/to/chromium/src/cef"。注意不管你下的是CEF1或CEF3,文件夹名都必须命名为"cef"

cd /path/to/chromium/src
svn co http://chromiumembedded.googlecode.com/svn/trunk/cef1 cef

发布版:

     发布版和开发版基本的操作是一样的,只不过是把有Debug的地方改成Release而已。具体的你可以查看原文链接。

手动编译:

1.运行cef_create_project脚本(windows下用.bat, OS-X和linux下用.sh)去产生一个在GYP配置下的编译文件

cd /path/to/chromium/src/cef
./cef_create_projects.sh

2.编译CEF

    windows下你可以直接用Visual Studio 的.sln文件编译,做为替代的方法,你也可以在命令行下运行脚本build_projects来编译整个工程,
cd /path/to/chromium/src/cef/tools
build_projects.sh Debug

手动打包:

     当编译好开发版和发布版后,你可以用make_distrib工具(windows用.bat,OS-X和Linux用.sh)去创建一个二进制分发包。
cd /path/to/chromium/src/cef/tools
make_distrib.sh

如果这个过程成功了,一个二进制的分发包会生成在/path/to/chromium/src/cef/binary_distrib目录中。

     你可以去make_distrib.py脚本下看到更多的使用信息。