Avalonia跨平台入门第三十九篇之再耍CEF

💡 原文中文,约1100字,阅读约需3分钟。
📝

内容提要

作者分享了在Ubuntu下运行浏览器的效果,包括在openKylin系统和RK3568下的运行效果。作者还提供了解决运行过程中出现的问题的方案。最后,作者表示编程的乐趣在于改bug、编码、完成和挖填坑。作者希望读者能够关注并留言,以便回复和支持。

🔎

延伸解读

跨平台运行的实际环境验证

文章展示了在Ubuntu、openKylin系统以及RK3568硬件上运行基于CEF的Avalonia浏览器的效果。这表明该方案不仅能在常见Linux发行版上工作,还能适配国产操作系统和ARM架构嵌入式设备,为需要在多平台部署WebView的开发者提供了实际参考。

依赖库缺失的典型处理方式

运行过程中出现了libdl.so.2缺失的问题,作者通过whereis定位后,使用软链接将x86_64架构下的库文件链接到系统库目录。这反映了Linux环境下动态库路径配置的常见做法,但需注意该命令针对特定架构,在其他平台上可能需要调整路径。

X11开发包与ARM环境变量

解决libdl问题后又遇到X11相关错误,通过安装libx11-dev解决。而在RK3568上则需通过设置LD_PRELOAD环境变量预加载libcef.so。这些步骤说明CEF在Linux和ARM平台对系统依赖和运行环境有特定要求,部署时需根据平台差异调整。

代码集成与本地页面加载

示例代码展示了如何创建WebView并加载本地HTML文件,通过BrowserCreated事件触发导航,并在窗口关闭时调用Shutdown。这为在Avalonia应用中嵌入浏览器控件提供了基本模式,但实际使用中可能还需处理更多交互和生命周期问题。

❓

Q&A

在Ubuntu下运行浏览器的效果如何?

在Ubuntu下,浏览器运行效果良好,尤其是在openKylin系统和RK3568上都有展示。

如何在代码中使用WebView加载本地HTML文件?

可以使用以下代码:WebView webview = new() { Focusable = true }; string url = $"file:///{AppDomain.CurrentDomain.BaseDirectory}Map//HeatMap.html"; webview.BrowserCreated += (s, e) => webview.Navigate(url);

在RK3568上遇到的X11问题如何解决?

可以通过运行命令 'sudo apt-get install libx11-dev' 来解决RK3568上的X11问题。

作者对编程的看法是什么?

作者认为编程的乐趣在于改bug、编码、完成和挖填坑,强调了编程过程中的各种情感体验。

文章中提供了哪些开源项目的链接?

文章中提供了一个开源项目的链接:https://github.com/Haltroy/CefNet.Avalonia.Examples。

作者希望读者如何参与互动?

作者希望读者能够留言,分享意见和想法,并表示会及时回复大家。

➡️

继续阅读