您当前的位置: 首页 >  windows

插件开发

暂无认证

  • 2浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

libcef--在windows或者linux上创建一个简单的应用程序

插件开发 发布时间:2022-03-17 08:16:13 ,浏览量:2

文章目录
    • 1.介绍
    • 2.入门
    • 3.加载自定义 URL
    • 4.应用模块
    • 5.源代码
    • 6.入口点函数
    • 7.简单应用
    • 8.简单处理程序
    • 9.构建步骤
    • 10.Windows 构建步骤
    • 11.Linux 构建步骤
    • 12.Mac OS X 构建步骤
    • 13.作者答疑

1.介绍

  本教程解释了如何使用 CEF3 创建一个简单的应用程序。它引用了cefsimple 示例项目。如需完整的 CEF3 使用信息,请访问GeneralUsage Wiki 页面。

2.入门

  CEF 提供了一个示例项目,可让您轻松开始 CEF 开发。只需浏览到cef-project网站并按照分步说明进行操作。本教程链接的源文件适用于当前的 CEF3 主分支,可能与 cef-project 下载的版本略有不同。

3.加载自定义 URL

  cefsimple 应用程序默认加载 zhiliaos.com,但您可以将其更改为加载自定义 URL。加载不同 URL 的最简单方法是通过命令行。这个项目是源代码项目下的展示项目:

# 加载本地文件“c:\example\example.html” 
cefsimple.exe --url=file://c:/example/example.html

  您还可以编辑cefsimple/simple_app.cc 中的源代码并重新编译应用程序以默认加载您的自定义 URL。

// 加载本地文件“c:\example\example.html” 
... 
if (url.empty()) 
  url = "file://c:/example/example.html"; 
…
4.应用模块

  所有 CEF 应用程序都具有以下主要组件:

  1. CEF 动态库(Windows 上的 libcef.dll,Linux 上的 libcef.so,OS X 上的“Chromium Embedded Framework.framework”)。
  2. 支持文件(*.pak 和 *.bin 二进制 blob 等)。
  3. 资源(用于内置功能、字符串等的 html/js/css)。
  4. 客户端可执行文件(本示例中为 cefsimple)。

  CEF 动态库、支持文件和资源对于每个基于 CEF 的应用程序都是相同的。它们包含在二进制分发版的 Debug/Release 或 Resources 目录中。请参阅二进制分发版中包含的 README.txt 文件,详细了解哪些文件是必需的,哪些可以安全地省略。有关每个平台上所需应用程序布局的详细说明,请参见下文。

  以下列表总结了本教程中最重要的模块信息:

  • CEF 使用多个进程。主要的应用程序进程称为“浏览器”进程。将为渲染器、插件、GPU 等创建子进程。
  • 在 Windows 和 Linux 上,相同的可执行文件可用于主进程和子进程。在 OS X 上,您需要为子进程创建单独的可执行文件和应用程序包。
  • CEF 中的大多数进程都有多个线程。CEF 提供了用于在这些不同线程之间发布任务的函数和接口。
  • 某些回调和函数可能仅用于特定进程或特定线程。在第一次开始使用新的回调或函数之前,请务必阅读 API 标头中的源代码注释。
5.源代码

  cefsimple 应用程序初始化 CEF 并创建一个弹出式浏览器窗口。当所有浏览器窗口都关闭时,应用程序终止。程序流程如下:

  1. 操作系统执行浏览器进程入口点函数(main 或 wWinMain)。
  2. 入口点函数:创建处理进程级回调的 SimpleApp 实例。初始化 CEF 并运行 CEF 消息循环。
  3. 初始化后,CEF 调用 SimpleApp::OnContextInitialized()。这种方法:创建 SimpleHandler 的单例实例。使用 CefBrowserHost::CreateBrowser() 创建浏览器窗口。
  4. 所有浏览器共享 SimpleHandler 实例,该实例负责自定义浏览器行为和处理与浏览器相关的回调(生命周期、加载状态、标题显示等)。
  5. 当浏览器窗口关闭时,调用 SimpleHandler::OnBeforeClose()。当所有浏览器窗口都关闭时, OnBeforeClose 实现会退出 CEF 消息循环以退出应用程序。 您的二进制发行版可能包含以下文件的较新版本。但是,一般概念保持不变。
6.入口点函数

  执行开始于浏览器进程入口点函数。该函数负责初始化 CEF 和任何与操作系统相关的对象。例如,它在 Linux 上安装 X11 错误处理程序并在 OS X 上分配必要的 Cocoa 对象。OS X 有一个单独的入口点函数用于辅助进程。

平台实现Windows平台实现cefsimple/cefsimple_win.ccLinux平台实现cefsimple/cefsimple_linux.ccMac OS X 平台实现对于浏览器进程:cefsimple/cefsimple_mac.mm对于子进程:cefsimple/process_helper_mac.cc 7.简单应用

  SimpleApp 负责处理进程级回调。它公开了一些由多个进程共享的接口/方法,以及一些仅在特定进程中调用的接口/方法。例如,CefBrowserProcessHandler 接口仅在浏览器进程中调用。有一个单独的 CefRenderProcessHandler 接口(在这个例子中没有显示),它只在渲染过程中被调用。注意 GetBrowserProcessHandler() 必须返回 |this| 因为 SimpleApp 实现了 CefApp 和 CefBrowserProcessHandler。有关CefApp 和相关接口的其他信息,请参阅GeneralUsage Wiki 页面或 API 头文件。共享实现:cefsimple/simple_app.h、cefsimple/simple_app.cc

8.简单处理程序

  SimpleHandler 负责处理浏览器级别的回调。这些回调在浏览器进程中执行。在此示例中,我们对所有浏览器使用相同的 CefClient 实例,但您的应用程序可以根据需要使用不同的 CefClient 实例。有关CefClient 和相关接口的其他信息,请参阅GeneralUsage Wiki 页面或 API 头文件。

  1. 共享实现:cefsimple/simple_handler.h、cefsimple/simple_handler.cc
  2. Windows平台实现:cefsimple/simple_handler_win.cc
  3. Linux平台实现:cefsimple/simple_handler_linux.cc
  4. Mac OS X 平台实现:cefsimple/simple_handler_mac.mm
9.构建步骤

  构建步骤因平台而异。探索包含在二进制发行版中的 CMake 文件,以全面了解所有必需的步骤。所有平台通用的构建步骤一般可以总结如下:

  1. 编译 libcef_dll_wrapper 静态库。
  2. 编译应用程序源代码文件。链接 libcef 动态库和 libcef_dll_wrapper 静态库。
  3. 将库和资源复制到输出目录。
10.Windows 构建步骤
  1. 编译 libcef_dll_wrapper 静态库。
  2. 编译/链接 cefsimple.exe。
    • 所需的源代码文件包括:cefsimple_win.cc、simple_app.cc、simple_handler.cc、simple_handler_win.cc。
    • 所需的链接库包括:comctl32.lib、shlwapi.lib、rcprt4.lib、libcef_dll_wrapper.lib、libcef.lib、cef_sandbox.lib。请注意,cef_sandbox.lib(沙箱支持所需)是当前使用 Visual Studio 2015 Update 3 构建的静态库,它可能无法与其他 Visual Studio 版本一起编译。有关如何禁用沙箱支持,请参阅 cefsimple_win.cc 中的注释。
    • 资源文件是cefsimple.rc。
    • 清单文件是cefsimple.exe.manifest 和compatibility.manifest。
  3. 将所有文件从 Resources 目录复制到输出目录。
  4. 将所有文件从 Debug/Release 目录复制到输出目录。
11.Linux 构建步骤
  1. 编译 libcef_dll_wrapper 静态库。
  2. 编译/链接 cefsimple。
    • 所需的源代码文件包括:cefsimple_linux.cc、simple_app.cc、simple_handler.cc、simple_handler_linux.cc。
    • 所需的链接库包括:libcef_dll_wrapper.a、libcef.so 和依赖项(在构建时使用“pkg-config”工具确定)。
    • 配置 rpath 以在当前目录中查找 libcef.so(“-Wl,-rpath,.”)或使用 LD_LIBRARY_PATH 环境变量。
  3. 将所有文件从 Resources 目录复制到输出目录。
  4. 将所有文件从 Debug/Release 目录复制到输出目录。 在 chrome-sandbox 可执行文件上设置 SUID 权限以支持沙箱。有关必要命令,请参阅二进制分发构建输出。
12.Mac OS X 构建步骤
  1. 编译 libcef_dll_wrapper 静态库。
  2. 编译/链接/打包“cefsimple Helper”应用程序。
    • 所需的源代码文件包括:process_helper_mac.cc。
    • 所需的链接框架包括:AppKit.framework。
    • 应用程序包配置通过“cefsimple/mac/helper-Info.plist”提供。
    • 按此处所述加载 CEF 框架。
  3. 编译/链接/打包“cefsimple”应用程序。
    • 所需的源代码文件包括:cefsimple_mac.mm、simple_app.cc、simple_handler.cc、simple_handler_mac.mm。
    • 所需的链接框架包括:AppKit.framework。
    • 应用程序包配置通过“cefsimple/mac/Info.plist”提供。
    • 按此处所述加载 CEF 框架。
  4. 在 cefsimple.app 包中创建一个 Contents/Frameworks 目录。将以下文件复制到该目录:“cefsimple Helper.app”、“Chromium Embedded Framework.framework”。
13.作者答疑

  如有疑问,请留言。

关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0377s