-1

我正在树莓派 4 上使用 webkitgtk 构建信息亭应用程序。

此应用程序不会连接到 Internet,并且 UI 的所有 html、css、javascript 都位于本地文件系统上。

我正在使用 buildroot 设置 Linux 系统,从 buildroot 中提供的 pi 4 defconfig 开始。

我已经启用了运行 webkitgtk 所需的所有软件包。

此外,kiosk 应用程序已在我的桌面上使用相同的软件堆栈进行了测试,并且可以正常工作

但是,当我尝试在树莓派上启动应用程序时,会弹出一个空白页面。我通过启用本地文件访问来玩弄WebKitWebSettings与我关联的对象。WebKitWebView它仍然显示一个空白屏幕。

我的 pi4 应用程序包中还包含一个简单的 gtk3+ 应用程序。这样启动成功!

我真的很感激一些关于为什么会发生这种情况的指示,因为我已经走到了死胡同

更新

我启用了 Webkitgtk 软件包附带的 MiniBrowser 应用程序。输入本地url,页面不加载。它只在顶部给我一条消息,说“下载成功”。它似乎将我的输入视为下载

更新 2

经过一些更多的实验,我终于能够让 webkitgtk 在 pi 4 上工作。问题似乎源于使用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 时的配置切换

4

1 回答 1

0

如果无法访问您的环境和设置,我很难弄清楚可能会发生什么。我的直觉是页面显示为空白,因为可能缺少一些共享库。您可以通过以下方式检查:

$ ldd WebKitBuild/GTK/Release/bin/MiniBrowser

我正在使用 buildroot 设置 Linux 系统,从 buildroot 中提供的 pi 4 defconfig 开始。

有一个 buildroot 存储库,用于为 RPi 构建 WPE。WPE (WebPlatform for Embeded) 类似于 WebKitGTK 但不依赖于 GTK 工具包。另一个重要的区别是 WPE 在 Wayland 上本地运行。

如果您有兴趣将 web 应用程序嵌入在功能有限的设备中运行的浏览器中,那么 WPE 是比 WebKitGTK 更好的选择。为 RPi 构建 WPE 的 buildroot 存储库在这里:

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。

于 2021-01-13T02:07:30.940 回答