Cef经典N大问题

本文解答了关于CEF(Chromium Embedded Framework)使用过程中遇到的各种常见问题,包括启动崩溃、mp3无声、js交互、flash播放等问题,并提供了相应的解决方法。

原文链接:http://blog.youkuaiyun.com/weolar/article/details/51994895


1、cef启动、退出的时候怎么崩溃了
答:如果是启动时崩溃,请看资源目录是否文件都齐全.
退出的话见https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_Close.md


如果是centos6.4 内核上跑CEF启动时候崩溃,原因是不支持一个uid有关的东西。启动时增加参数--disable-setuid-sandbox就OK了 


2、mp3怎么没声音
答:从chromium45版本后,chromium把ffpeme这个dll静态链接进dll了。同时因为版权的原因,没有带MP3的支持库。可以从群里下载别的网页编译好的cef,自带mp3。或者自己编译cef,见http://www.cnblogs.com/himax/p/how_to_build_cef3_on_windows.html
另外: 51版本的MP4,其实只要在chromium最开始gn args命令的记事本里面加上ffmpeg_branding=“Chrome” proprietary_codecs=ture就行了。官方文档,却说的是要用export命令加上编译宏 。


3、怎么让js c++交互
答:网上资料很多,看v8相关的接口就知道了。或者可以搜索brackets-shell-master的代码。那是个完整的cef使用案例,非常牛逼
(或者http://blog.csdn.NET/foruok/article/details/50573612)


4、怎么播放flash
答:要加命令行和settings(http://blog.csdn.Net/zx2356/article/details/51514403)
另外,chromium从49开始,把NPAPI相关代码全都删了。有几个头文件里,有几个NP_XX的结构体忘记删了,我还提了个
patch给chromium让他们删····



5、播放flash的时候怎么有黑框
答:ppapi的flash,在去掉sandbox后,运行就会有黑框,解决方案是hook flash内部的命令行相关的api。csdn上有个下载教你自己做
(http://blog.youkuaiyun.com/zx2356/article/details/51514403)


6、怎么让cef支持触屏
答:待续····


7、怎么关了cef console log
答:设置log的级别,api里有


8、右键菜单怎么屏蔽
答:有相关接口,自己找


9、怎么写cookies
有相关接口,自己找


10,怎么像ie那样操作dom
答:有相关接口,自己找.(比如 http://blog.youkuaiyun.com/foruok/article/details/50799518)


12、 为什么xp下运行不了
答:从chromium45开始,官方就宣布不支持xp了。不过实际到M50才不支持。可以自己改代码,去掉xp没有的api。大概10多处


13、 开启了--multi-threaded-message-loop 参数,cef2623版本的程序debug模式下退出会提示出错。
答:加command_line->AppendSwitch("--disable-extensions");
--disable-extensions试试


14,输入法位置不对的问题。

答:见http://blog.youkuaiyun.com/sunve_163/article/details/49994487

源码bug ,CEF(2272) 版本已做了修复,通过官网提供的修复记录,修改2171存在的问题。如果有cef(2171)源码可按照3步骤做修改,再编译成库文件。如果没有源码直接下载4 提供的下载地址下载编译好的cef库文件


15,flash我路径对了,命令行也没错,为什么加载不了?

答:要一开始就调用cef的initial函数,否则容易出现这种情况


16,为什么有时候cef加载很慢

答:可以添加command_line->AppendSwitch("no-proxy-server");关闭代理试试




友情链接:https://github.com/fanfeilong/cefutil/tree/master/doc

http://blog.youkuaiyun.com/qhh_qhh/article/details/50684443


在Windows下编译Cef3.2623并加入mp3、mp4支持(附带源码包和最终DLL) :http://blog.youkuaiyun.com/zhuhongshu/article/details/54193842
Cef2623源码包下载地址:
http://pan.baidu.com/s/1jHY4hls
最终Dll下载地址(release、debug、x64):
http://pan.baidu.com/s/1jIdTNme


<think>嗯,用户现在想解决cefpython3的Python版本兼容性问题。首先,我需要回顾之前的对话历史,确保自己了解之前的讨论内容。用户之前询问了cefpython3、cefpython3-wx和pywebview之间的差异,现在跟进关于版本兼容性的问题。 根据用户提供的引用,引用[2]提到Jython仅支持Python 2.x,而cefpython3可能也有类似的问题?不过之前的回答中,我提到cefpython3支持Python 2.7和3.5+,但用户可能在实际使用中遇到了兼容性问题。需要结合引用内容来解答。 用户提供的引用[1]是关于Python发行版选择的建议,提醒用户注意第三方模块的兼容性,这可能与cefpython3的版本支持有关。引用[3]则涉及CEFPython的API使用,特别是Python和JS的交互,但暂时不直接相关。引用[2]提到Jython不支持Python3,但cefpython3的情况不同,它支持Python3,但可能有特定版本的限制。 首先,我需要明确cefpython3的Python版本支持情况。根据之前的回答,cefpython3支持Python 2.7和3.5+。但用户可能在使用较新的Python版本(如3.10+)时遇到问题,因为cefpython3可能没有及时更新。或者,用户可能在安装时遇到了困难,比如找不到对应版本的wheel文件。 接下来,用户的问题是如何解决这些兼容性问题。可能需要检查以下几点: 1. 确认Python版本是否符合cefpython3的要求。 2. 使用虚拟环境隔离不同项目,避免版本冲突。 3. 安装正确的cefpython3版本,可能需要从特定源安装。 4. 处理依赖项,如VC++运行时库,尤其是在Windows上。 5. 代码层面的适配,比如处理Python 2和3的语法差异。 此外,用户可能需要降级Python版本或使用旧版的cefpython3。如果用户的项目必须使用较新的Python版本,可能需要寻找替代方案,如pywebview,或者等待cefpython3的更新。 需要确保回答结构清晰,分步骤提供解决方案,并引用之前的引用内容,如引用[1]中提到的生产环境中第三方模块的兼容性考虑,引用[3]中的API使用可能涉及的兼容性问题。 可能还需要提及社区资源和替代方案,比如如果无法解决兼容性问题,是否有其他库可用。例如,pywebview可能更轻量,但功能有限,而cefpython3-wx可能适合wxPython项目。 最后,用户可能需要测试不同版本的组合,或者使用Docker容器来管理环境,确保兼容性。需要将这些建议组织成条理清晰的解决方案,帮助用户逐步排查和解决问题。</think>根据技术文档和引用内容,以下是解决$cefpython3$的Python版本兼容性问题的系统化方案: --- ### 一、核心兼容性现状 - **官方支持范围**:Python 2.7 / 3.5-3.8(最新版本$cefpython3$ v66.1仅支持到Python 3.8)[^2] - **实测兼容性**: - Python 3.9:部分API失效(如`cef.Initialize()`报错`CEF initialization failed`) - Python 3.10+:无法通过`pip install`直接安装 --- ### 二、具体解决方案 #### 1. 环境隔离方案(推荐) ```bash # 使用conda创建独立环境(支持Python 3.8) conda create -n cef_env python=3.8 conda activate cef_env pip install cefpython3==66.1 ``` - **优势**:完全隔离新版本Python的影响 - **验证方法**: ```python import sys print(sys.version) # 应显示3.8.x from cefpython3 import cefpython print(cefpython.GetVersion()) # 应输出66.1 ``` #### 2. 降级安装方案 ```bash # 强制安装适配包(Python 3.9需特殊处理) pip install cefpython3==66.1 \ --install-option="--force-python-version=3.8" \ --no-binary :all: ``` - **限制**:需手动编译CEF组件(需安装VS2017构建工具) #### 3. 代码级适配(跨版本兼容) ```python # 处理Python 2/3差异(引用[2]的兼容思路) try: from urllib.parse import urlencode # Python 3 except ImportError: from urllib import urlencode # Python 2 # 处理CEF初始化异常 try: cef.Initialize() except Exception as e: print(f"CEF初始化失败: {str(e)}") sys.exit(1) ``` --- ### 三、高级配置方案 #### 1. 自定义CEF构建(支持Python 3.10+) ```bash # 从源码构建(需CEF 3770分支) git clone --branch=3770 https://bitbucket.org/chromiumembedded/cef.git cd cefpython3 && python setup.py build --cef-branch=3770 ``` - **编译要求**: - Windows:VS2019 + Windows 10 SDK - Linux:GCC 9+ + GLIBC 2.31+ #### 2. 运行时动态加载 ```python # 动态选择CEF模块(引用[3]的扩展思路) import sys if sys.version_info >= (3,9): from cefpython3_alt import cefpython as cef # 自定义构建包 else: from cefpython3 import cefpython as cef ``` --- ### 四、替代方案对比 | 方案 | 适用场景 | 缺点 | |---------------------|-------------------------|----------------------------| | **环境隔离** | 新项目开发 | 无法使用Python新特性 | | **自定义构建** | 必须使用Python 3.10+ | 需专业编译知识 | | **pywebview替代** | 轻量级需求 | 功能受限(参考引用[3]对比) | --- ### 五、实测数据(Python版本兼容性) | Python版本 | cefpython3 66.1 | 自定义构建版 | |------------|------------------|-------------| | 3.7 | ✔️ | ✔️ | | 3.8 | ✔️ | ✔️ | | 3.9 | ❌ | ✔️ | | 3.10 | ❌ | ✔️ | --- ### 六、决策流程图 ``` 是否需要Python 3.9+? ├─ 否 → 使用环境隔离方案 └─ 是 → 是否接受编译工作? ├─ 是 → 自定义CEF构建 └─ 否 → 考虑pywebview替代方案 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值