Chromium
本指南将介绍如何使用 JxBrowser 使用的 Chromium 构建。
您无需在目标环境中安装 Chromium 或 Google Chrome 即可使用 JxBrowser。JxBrowser 使用并部署其自有的 Chromium 构建。
二进制文件
每个受支持平台的 Chromium 二进制文件都位于相应的 JxBrowser JARs 中。
jxbrowser-win32-8.2.0.jar
– 适用于 Windows 32 位的 Chromium 二进制文件。jxbrowser-win64-8.2.0.jar
– 适用于 Windows 64 位的 Chromium 二进制文件。jxbrowser-mac-8.2.0.jar
– 适用于 macOS 的 Chromium 二进制文件。jxbrowser-mac-arm-8.2.0.jar
– 适用于 macOS Apple Silicon 的 Chromium 二进制文件。jxbrowser-linux64-8.2.0.jar
– 适用于 Linux 64 位的 Chromium 二进制文件。jxbrowser-linux64-arm-8.2.0.jar
– 适用于 Linux ARM 64 位的 Chromium 二进制文件。
位置
默认情况下,JxBrowser 会将 Chromium 二进制文件提取到 Linux 和 macOS 上的用户临时目录,以及 Windows 上的 AppData\Local\JxBrowser
目录。
以下是如何更改 JxBrowser 提取二进制文件的目录的方法:
使用
jxbrowser.chromium.dir
系统属性。它可以通过
System.setProperty()
方法来设置:JavaKotlinSystem.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser");
System.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser")
或者通过 JVM 参数来设置:
-Djxbrowser.chromium.dir="Users/Me/.jxbrowser"
在构建
Engine
时通过EngineOptions
:JavaKotlinvar engine = Engine.newInstance(EngineOptions.newBuilder(renderingMode) .chromiumDir(Paths.get("Users/Me/.jxbrowser")) .build());
val engine = Engine(renderingMode) { chromiumDir = Path("Users/Me/.jxbrowser") }
该目录路径可以是相对路径也可以是绝对路径。
目录不能位于网络驱动器上。
验证
每个 JxBrowser 版本仅与其相同版本的二进制文件兼容。例如, JxBrowser 的 8.2.0.1 版本无法使用来自 JxBrowser 8.2.0 的二进制文件。
为确保 Chromium 二进制文件与当前的 JxBrowser 版本兼容,库会对这些二进制文件进行验证。
提取
默认情况下,当首次创建 Engine
时,JxBrowser 会从相应的 JAR 文件中提取二进制文件。如果您需要提前提取二进制文件,请使用以下代码:
// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory();
// 或者使用任意目录。
ChromiumBinaries.deliverTo(Paths.get("/path/to/binaries"));
// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory()
// 或者使用任意目录。
ChromiumBinaries.deliverTo(Path("/path/to/binaries"))
如果兼容的二进制文件已经提取过,JxBrowser 将不会再次提取它们。否则,JxBrowser 会再次提取二进制文件并覆盖现有文件。
自定义交付
从 JxBrowser 7.35 开始,开发者可以完全控制 Chromium 二进制文件到环境的交付过程。 这项功能是为高级用例设计的,例如从网络下载二进制文件,或使用自定义压缩算法。
要自定义交付,实现 BinariesDelivery
接口,并在需要时交付二进制文件:
class TuneBinaryDelivery implements BinariesDelivery {
public void deliverTo(Path chromiumDir) {
// 伪代码:
// Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
// Gzip.extract(downloadedArchive, chromiumDir);
}
}
...
// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory(new TuneBinaryDelivery());
// 或使用任意目录。
ChromiumBinaries.deliverTo(chromiumDir, new TuneBinaryDelivery());
class TuneBinaryDelivery : BinariesDelivery {
override fun deliverTo(chromiumDir: Path) {
// 伪代码:
// Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
// Gzip.extract(downloadedArchive, chromiumDir);
}
}
...
// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory(TuneBinaryDelivery())
// 或使用任意目录。
ChromiumBinaries.deliverTo(chromiumDir, TuneBinaryDelivery())
如果兼容的二进制文件已经被提取,JxBrowser 将不会调用自定义交付。
沙盒
Windows
JxBrowser 支持 Windows 上的 Chromium 沙盒。沙盒默认启用,但您可以通过适当的 Engine
选项禁用它:
var engine = Engine.newInstance(EngineOptions.newBuilder(renderingMode)
.disableSandbox()
.build());
val engine = Engine(renderingMode) {
sandboxDisabled = true
}
Linux 和 macOS
目前沙盒仅支持 Windows 平台。