SkiaKit

最初 fork 自 migueldeicaza/SkiaKit


安装

SkiaKit 是一个包装库,它通过中间 C API 将 Skia 的 C++ API 映射到 Swift。

SkiaKit 不包含实际的 Skia 代码。 而是链接到一个预构建的二进制文件。 您必须获取此二进制文件并将其放置在链接器可以找到它的位置(通常是像 /usr/local/lib 这样的系统目录)。
希望这只是一个临时的要求。 当 Swift Package Manager 支持在所有平台上使用包运送二进制文件时,手动安装 Skia 将不再必要。


1. 获取 Skia 二进制文件

选项 1:使用下载脚本

获取二进制文件的最简单方法是使用 tools/install_skia.sh 处的自动下载和安装脚本。

在您的终端中执行以下行以使用正确的参数运行脚本

SKIAKIT_VERSION=<insert the exact version of SkiaKit package, e.g. 0.0.1>
SKIAKIT_PLATFORM=<insert your platform, allowed values: linux, macos>
curl -L https://raw.githubusercontent.com/UnGast/SkiaKit/main/tools/install_skia.sh --output install_skia.sh && chmod +x install_skia.sh && sudo ./install_skia.sh $SKIAKIT_PLATFORM $SKIAKIT_VERSION
rm install_skia.sh

选项 2:手动下载预构建的二进制文件

您可能会在以下位置找到适用于您平台的二进制文件:releases(查看 assets 部分)。

如果您找到了适用于您平台的预构建二进制文件,请继续执行步骤 2


选项 3:自行编译

我无法为每个可能的平台提供预构建版本。 因此,您可能必须自己编译 Skia,这并不难。
阅读 skia.org 上的教程,并构建此修改后的 Skia 版本的确切提交

https://github.com/UnGast/skia/tree/d22bd8f1c52c3181e63561f88dfbe4cb4d891d66

我使用以下构建参数,您可能需要根据您的平台进行调整。

请注意,构建 Skia 需要 Python 2。


Ubuntu 上的 GN 构建参数

is_official_build = true
target_os = "linux"
target_cpu = "x64"
skia_use_piex = false
skia_enable_tools = false
skia_use_harfbuzz=false
skia_use_system_expat = false
skia_use_system_freetype2 = true
skia_use_system_libjpeg_turbo = false
skia_use_system_libpng = false
skia_use_system_libwebp = false
skia_use_vulkan = true

extra_cflags = [ "-DHAVE_GETRANDOM" ]

MacOS 上的 GN 构建参数

is_debug=false
is_official_build=true
skia_use_system_expat=false
skia_use_system_icu=false
skia_use_system_libjpeg_turbo=false 
skia_use_system_libpng=false
skia_use_system_libwebp=false
skia_use_system_zlib=false
skia_use_sfntly=false
skia_use_freetype=true
skia_use_harfbuzz=false
skia_pdf_subset_harfbuzz=false
skia_use_system_freetype2=false
skia_use_system_harfbuzz=false
target_cpu="x64"
extra_cflags=["-DHAVE_GETRANDOM", "-DHAVE_XLOCALE_H"]
extra_cflags_cc=["-frtti"]

Windows 上的 GN 构建参数

is_official_build = true
clang_win = "C:\Program Files\LLVM" # depends on where you have LLVM installed
extra_cflags = ["/MD"] # link the C runtime dynamically instead of statically, otherwise won't work when linked with swift modules

target_os = "win"
target_cpu = "x64"

skia_use_system_expat=false
skia_use_system_libjpeg_turbo=false
skia_use_system_libpng=false
skia_use_system_libwebp=false
skia_use_system_zlib=false
skia_use_system_icu=false
skia_use_harfbuzz=false

skia_use_vulkan = true

2. 使链接器可见二进制文件

确保您的二进制文件名为 libskia_skiakit.a,如果不是,只需重命名它。 然后将您的二进制文件放入 /usr/local/lib。 这将需要 root 权限。

现在您应该可以像普通的 Swift 包一样使用此包。



最初 fork 自 migueldeicaza/SkiaKit

这项工作使用了大量来自 Microsoft 的 SkiaSharp 绑定的代码,这些代码由 Matthew Leibowitz 和数十位贡献者编写。 恰好 SkiaSharp 拥有一套非常先进的桥接 API,可以连接到底层 Skia 引擎,这些 API 在上游 Google Skia 项目中不存在。