当前位置: 首页 > 工具软件 > obs-browser > 使用案例 >

Mac OBS 浏览器插件升级obs-browser

缑赤岩
2023-12-01

在升级obs-browser,需要把obs-browser-page打包进来,但在本地上跑是正常,到其他机子上运行,加载浏览器插件时就crash。分析步骤:

obs-browser 依赖于CEF,在确定了CEF已经一致的,排出了CEF 里“Chromium Embedded Framework.framework”库的问题

通过加log代码,确定了代码在CefInitialize(args, settings, app, nullptr)执行后crash(文件:obs-browser-plugin.cpp),从而确定在启动obs-browser-page时出错了。

因为obs-browser-page不依赖libobs,所以写的日志代码无法在日志文件里输出查看。原来我们打开app是双击或者open XX.app,

这个方式下代码了的printf的输出是无法查看的,从而了新的思路,通过直接在终端运行 XX.app/Contents/MacOS/xx ,此时日志包括printf输出都能看,在obs-browser-page项目中添加日志代码,确定代码int ret = CefExecuteProcess(mainArgs, mainApp.get(), NULL);执行crash,且发现crash之前有个错误提示:

[0326/161058.515684:ERROR:icu_util.cc(136)] icudtl.dat not found in bundle
[0326/161058.515762:ERROR:icu_util.cc(172)] Invalid file descriptor to ICU data received.

通过google相关的资料,大体的意思是需要设置framework_dir_path的路径,从而返回源码查看,发现这个参数是通过一个宏赋值的,CefString(&settings.framework_dir_path) = CEF_LIBRARY;(文件:obs-browser-plugin.cpp)

返回到本机上将framework_dir_path打印输出(本机可以正常运行),发现framework_dir_path的值是本地CEF的路径。

CEF_LIBRARY=/Users/XX/cef/Release/Chromium Embedded Framework.framework

为了再次确定这个问题,我在其他机子上构建的这个目录,然后程序能正常的加载浏览器插件并显示。

找了问题的原因,接下来就可以修改这个framework_dir_path变量值,指定到我们包里的Chromium Embedded Framework.framework的路径,即可完成打包

 类似资料: