Jcef应用浅析
来源:互联网 发布:java知识分享 编辑:程序博客网 时间:2024/06/04 00:25
CEF应用浅析
一、CEF简介
a) CEF是一款基于Chromium浏览器的嵌入式框架,提供了基本的浏览器功能。包括自定义插件、各种协议、Javascript对象访问和扩展。一些可选的功能包括,资源加载、导航、上下文目录、打印等;值得一提的是,它对HTML5的支持和性能与Google Chrome浏览器同样优秀。
b) CEF包括CEF1、CEF2和CEF3三个大版本。其中,CEF1仅支持单线程,CEF2已经被废弃,所以现在基本是使用CEF3进行开发。
c) 如果希望了解更多相关内容,可以访问它的网站
https://bitbucket.org/chromiumembedded/cef/wiki/Home
d) 由于CEF是基于Chromium内核的,所以CEF支持的操作系统也会有限制。参考下表
Branch Date
Release Branch
Chromium Version
CEF1
CEF3
Windows Build Requirements
Mac OS X Build Requirements
Linux Build Requirements
Dec 2011
963
17
Yes
No
WinXP+, VS2008, Win7 SDK
OS X 10.6-10.7, 10.5+ SDK, Xcode 3.2.6
Ubuntu 10.04+, Debian Squeeze+
Feb 2012
1025
18
Yes
No
WinXP+, VS2008, Win7 SDK
OS X 10.6-10.7, 10.5+ SDK, Xcode 3.2.6-4.x
Ubuntu 10.04+, Debian Squeeze+
Apr 2012
1084
19
Yes
No
WinXP+, VS2008, Win7 SDK
OS X 10.6-10.7, 10.5+ SDK, Xcode 3.2.6-4.x
Ubuntu 10.04+, Debian Squeeze+
Aug 2012
1180
21
Yes
Yes
WinXP+, VS2010, Win7 SDK
OS X 10.6-10.7, 10.5+ SDK, Xcode 3.2.6-4.x
Ubuntu 12.04+, Debian Squeeze+
Oct 2012
1271
23
Yes
Yes
WinXP+, VS2010, Win7 SDK
OS X 10.6-10.8, 10.6+ SDK, Xcode 3.2.6-4.x
Ubuntu 12.04+, Debian Squeeze+
Jan 2013
1364
25
Yes
Yes
WinXP+, VS2010, Win8 SDK, Ninja (optional)
OS X 10.6-10.8, Xcode 3.2.6-4.x, Ninja (optional)
Ubuntu 12.04+, Debian Squeeze+, Ninja (optional)
Apr 2013
1453
27
Yes
Yes
WinXP+, VS2010, Win8 SDK, Ninja (optional)
OS X 10.6-10.8, 10.6+ SDK, Xcode 3.2.6-4.x, Ninja (optional)
Ubuntu 12.04+, Debian Squeeze+, Ninja (optional)
Jul 2013
1547
29
No
Yes
WinXP+, VS2010-2012, Win8 SDK, Ninja (optional)
OS X 10.6-10.8, 10.6+ SDK, Xcode 3.2.6-4.x, Ninja (optional)
Ubuntu 12.04+, Debian Squeeze+, Ninja
Oct 2013
1650
31
No
Yes
WinXP+, VS2010-2012, Win8 SDK, Ninja (optional)
OS X 10.6-10.9, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja
Ubuntu 12.04+, Debian Wheezy+, Ninja
Jan 2014
1750
33
No
Yes
WinXP+, VS2010-2013, Win8 SDK, Ninja
OS X 10.6-10.9, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja
Ubuntu 12.04+, Debian Wheezy+, Ninja
Apr 2014
1916
35
No
Yes
WinXP+, VS2013, Win8 SDK, Ninja
OS X 10.6-10.9, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja
Ubuntu 12.04+, Debian Wheezy+, Ninja
Aug 2014
2062
37
No
Yes
WinXP+, VS2013, Win8 SDK, Ninja
OS X 10.6-10.9, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja
Ubuntu 12.04+, Debian Wheezy+, Ninja
Oct 2014
2171
39
No
Yes
WinXP+, VS2013u4, Win8.1 SDK, Ninja
OS X 10.6-10.9, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja
Ubuntu 12.04+, Debian Wheezy+, Ninja
Jan 2015
2272
41
No
Yes
WinXP+, VS2013u4, Win8.1 SDK, Ninja
OS X 10.6-10.10, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja, 64-bit only
Ubuntu 12.04+, Debian Wheezy+, Ninja
Apr 2015
2357
43
No
Yes
WinXP+, VS2013u4, Win8.1 SDK, Ninja
OS X 10.6-10.10, 10.6+ SDK, Xcode 3.2.6-5.x, Ninja, 64-bit only
Ubuntu 12.04+, Debian Wheezy+, Ninja
e) 如果需要下载CEF可以到如下链接中下载
CEF相关下载
http://www.magpcss.net/cef_downloads/index.php
CEF3相关下载
https://cefbuilds.com/#branch_trunk
f) 尝试使用的话,可以在下载包中,找到cefsimple.exe和cefclient.exe,通过使用可以了解更多的相关特性。
二、JCEF简介
a) JCEF项目对CEF进行了一层Java封装。使用JNI调用CEF的功能。
三、CEF编译
a) 由于目前需要Windows下的cef,我这里只说一下Windows下的编译方式。
b) 首先,你的机器必须安装了Visual Studio 2013 Update4
c) 然后,需要安装depot_tools
d) 还需要安装Windows 8.1 SDK
e) 安装GYP也是必须的
f) 由于我这里只是使用了Visual Studio进行编译,其他帮助可以参考
http://dev.chromium.org/developers/how-tos
g) 设置环境变量,set GYP_GENERATORS=msvs
h) 进入加压后的文件
i) 主要是使用GYP生成Visual Studio需要的项目配置文件.sln
gclient runhooks
j) 然后使用Visual Studio打开,生成cefclient或cefsimple就可以了
k) 具体的过程参考
https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md
l) CEF的使用方法参考
https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md
四、JCEF编译
a) 编译JCEF可以在Windows, Linux和Mac OS X for 64-bit Oracle 7 Java目标上,32位没有测试,这里我测试了Windows 7,可以编译通过,使用的是"1.7.0_25"
b) GYP、Visual Studio 2013、depot_tools是必须的,GYP和depot_tools的路径配置到PATH中
c) 配置gclient
gclient config --unmanaged --name=src
https://bitbucket.org/chromiumembedded/java-cef.git
d) 下载JCEF和第三方依赖
gclient sync --jobs 8 --force --nohooks
e) 在src/third_party/cef/README.jcef中,看当前的JCEF支持什么CEF版本,不要看错,http://magpcss.org/ceforum/里的帖子好多都是因为这个造成的
f) 然后去http://cefbuilds.com里下载,这里我使用的win32,下载的是win32的一个版本,放到src/third_party/cef/win32下
g) 在src下使用gclient runhooks生成.sln文件,用Visual Studio编译生成目标文件,目标可以是Debug和Release的,生成的目录也不相同
h) 接着在当前shell中定义变量
set GYP_GENERATORS=msvs
set GYP_DEFINES=jcef_platform=win32 jdk_directory="C:\JDK7_25"
i) 在src/tools中,compile.bat win32编译,会在src/out/win32下生成
j) 使用src/tools/run.bat win32 Debug detailed运行
k) 如果路径不对,看下脚本吧
l) 最后,使用src/tools/make_distrib.bat win32打包,在src/binary_distrib/win32下可以找到
五、JCEF使用
a) 基于JCEF开发,需要使用到CEF生成的libcef.dll和jcef.dll等文件,还需要jcef.jar包
b) 可以参考tests.detailed.MainFrame和tests.simple.MainFrame
c) 由于我这里的主要需求是使用浏览器加载html字符串,字符串中包括js、css和图片等内容,直接使用loadUrl和loadString都不能达到要求
d) loadUrl只能加载url页面,loadString不能解析html字符串中的文件元素
e) 这里参考了tests.detailed.MainFrame的ClientSchemeHandler类
f) 具体步骤如下
i. CefApp.addAppHandler()添加一个CefAppHandlerAdapter的子类
ii. 在CefAppHandlerAdapter的子类的onRegisterCustomSchemes方法中,使用registrar.addCustomScheme添加一个自定义的scheme名
iii. 在CefAppHandlerAdapter的子类的onContextInitialized方法中,使用cefApp.registerSchemeHandlerFactory,把自定义的sheme和domain名称与自定义的CefSchemeHandlerFactory映射
iv. 每次CefSchemeHandlerFactory.create时,返回一个自定义的CefResourceHandlerAdapter
v. 可以通过改变processRequest中的html信息来加载html字符串
vi. Html中包含的文件元素,可以手动加载如html中,因为html解析是先解析html字符串,然后对于其中的文件信息在进行请求
g) 但JCEF对于SWT的支持不太好,可以参考Javacef,这个是一个国人写的,不过,我测试了一下,在我机器上,有些不太稳定,没有深究,可以学习和借鉴,
https://code.google.com/p/javacef/
- Jcef应用浅析
- JCEF的编译
- JS调用JCEF方法
- JCEF编译过程
- jcef编译和demo运行
- jcef编译和demo运行
- 项目管理软件应用浅析
- Ioc容器应用浅析
- Ioc容器应用浅析
- WebSphere MQ应用浅析
- 生产版本应用浅析
- 粒子系统应用浅析
- Android 字符串应用浅析
- Ioc容器应用浅析
- SurfaceView应用浅析
- Ioc容器应用浅析
- 浅析LinkedList及其应用
- C++ 模板应用浅析
- openstack模块之oslo_config
- Access denied for user 'mysql'@'localhost' (using password: NO)
- coreText的一些基础用法
- 23. 操作标签
- 安卓模仿电子词典
- Jcef应用浅析
- python学习笔记二
- 发现一个不错的学习网站
- 1035. Password (20)
- JAVA获取当前时间的三种方法
- 绝对详细!Nginx基本配置、性能优化指南
- 24. 使用GitHub
- C语言的基本输入与输出函数(全解)
- 排序算法系列之冒泡排序