最初 fork 自 migueldeicaza/SkiaKit
SkiaKit 是一个包装库,它通过中间 C API 将 Skia 的 C++ API 映射到 Swift。
SkiaKit 不包含实际的 Skia 代码。 而是链接到一个预构建的二进制文件。 您必须获取此二进制文件并将其放置在链接器可以找到它的位置(通常是像 /usr/local/lib 这样的系统目录)。
希望这只是一个临时的要求。 当 Swift Package Manager 支持在所有平台上使用包运送二进制文件时,手动安装 Skia 将不再必要。
获取二进制文件的最简单方法是使用 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
您可能会在以下位置找到适用于您平台的二进制文件:releases(查看 assets 部分)。
如果您找到了适用于您平台的预构建二进制文件,请继续执行步骤 2。
我无法为每个可能的平台提供预构建版本。 因此,您可能必须自己编译 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
确保您的二进制文件名为 libskia_skiakit.a
,如果不是,只需重命名它。 然后将您的二进制文件放入 /usr/local/lib
。 这将需要 root 权限。
现在您应该可以像普通的 Swift 包一样使用此包。
最初 fork 自 migueldeicaza/SkiaKit
这项工作使用了大量来自 Microsoft 的 SkiaSharp 绑定的代码,这些代码由 Matthew Leibowitz 和数十位贡献者编写。 恰好 SkiaSharp 拥有一套非常先进的桥接 API,可以连接到底层 Skia 引擎,这些 API 在上游 Google Skia 项目中不存在。