我正在树莓派4上使用webkitgtk构建一个kiosk应用程序。
该应用程序将不会连接到互联网,并且UI的所有html、css、javascript都位于本地文件系统上。
我使用buildroot来设置Linux系统,从buildroot中提供的pi 4 defconfig开始。
我已经启用了运行webkitgtk所需的所有软件包。
此外,kiosk应用程序已经在我的桌面上进行了测试,使用了相同的软件堆栈,它可以
然而,当我尝试在树莓派上启动应用程序时,会弹出一个空白页面。我已经通过启用本地文件访问来处理与我的WebKitWebView
关联的WebKitWebSettings
对象。它仍然显示一个空白屏幕。
我的pi4应用程序包中还包括一个简单的gtk3+应用程序。成功启动!
我真的很感激一些关于为什么会发生这种情况的建议,因为我已经达到了的死胡同
更新
我启用了Webkitgtk软件包附带的MiniBrowser应用程序。输入本地url,页面不会加载。它只在顶部给我一条信息,说";已成功下载";。它似乎将我的输入视为下载
更新2
经过更多的实验,我终于能够让webkitgtk在pi4上工作了。这个问题似乎源于使用webkit_web_view_load_uri()
api。
它似乎无法将我的html文档识别为网页。
我用webkit_web_view_load_html()
电话绕过了它。这包括一些技巧,首先将html文档的内容读入字符缓冲区,然后将其传递给webkit_web_view_load_html()
。您还必须提供该函数调用的基本路径,以便能够解析html文档中的所有url(脚本、css、图像等(。
我一直无法解决的另一个问题是,SVG图像没有加载到webkitgtk中。我用过jpg格式,它们很管用。我怀疑这可能是由于构建webkigtk 时的配置切换
如果不能访问您的环境和设置,我很难弄清楚可能会发生什么。我的直觉是,页面显示为空白,因为可能缺少一些共享库。您可以使用进行检查
$ ldd WebKitBuild/GTK/Release/bin/MiniBrowser
我使用buildroot来设置Linux系统,从buildroot中提供的pi 4 defconfig开始。
有一个buildroot存储库,用于为RPi构建WPE。WPE(WebPlatform for Embedded(类似于WebKitGTK,但并不依赖于GTK工具包。另一个重要区别是WPE在Wayland上本地运行。
如果你有兴趣在功能有限的设备上运行的浏览器中嵌入网络应用程序,WPE是比WebKitGTK更好的选择。用于为RPi构建WPE的buildroot repo在这里:
https://github.com/WebPlatformForEmbedded/buildroot
关于如何为RPi3:构建WPE,还有一个非常有趣的分步指南
https://samdecrock.medium.com/building-wpe-webkit-for-raspberry-pi-3-cdbd7b5cb362
我不确定buildroot配方是否适用于RPi4。它似乎适用于所有以前的版本,所以如果你试图在RPi4上构建WPE,你可能会踏入新的领域。
如果你有一个RPi3可用,我会尝试首先为RPi3构建WPE,并确保它有效。然后尝试RPi4。