使用Jetbrains的脚本(skia-pcak)编译Skia
前几天我尝试在Windows下编译了Skia并成功绘制了三角形,但是尝试绘制Hello World时并没有任何输出,我猜测是有字体相关的依赖(如fontconfig)没有处理好,而在Windows上安装并引入这些依赖好像有点太难了。一番查找发现JetBrains有个仓库用github的workflow编译Skia,这下问题简单了。

前几天我尝试在Windows下编译了Skia并成功绘制了三角形,但是尝试绘制Hello World时并没有任何输出,我猜测是有字体相关的依赖(如fontconfig)没有处理好,而在Windows上安装并引入这些依赖好像有点太难了。一番查找发现JetBrains有个仓库用github的workflow编译Skia,这下问题简单了。

开一台Ubuntu虚拟机克隆脚本

git clone https://github.com/JetBrains/skia-pack

拉取代码分支

python3 script/checkout.py --version m116-47d3027-1

接下来在真正开始编译前需要先打开编译脚本修改一下,因为这个脚本默认编译为静态库,而我想继续在Windows下折腾,用Linux的工具链编译的静态库肯定是不能直接用的。

添加参数生成动态库

开始编译

python3 script/build.py --target android --machine arm64  --ndk /home/zero/Android/Sdk/ndk/27.0.11902837

编译过程中可能报一些类似缺少头文件的错误,安装一些库后重试即可

sudo apt install build-essential gcc-9 g++-9 libfontconfig-dev mesa-common-dev  libgl1-mesa-dev libglu1-mesa-dev

最后把生成的so文件拷贝到我们之前的Demo工程,修改绘制部分输出文字

SkPaint paint;
canvas.clear(SkColorSetARGB(0xFF, 0x14, 0x14, 0x14));
paint.setColor(SK_ColorWHITE);
paint.setAntiAlias(true);
SkFont font;
font.setSize(64);
SkString text("你好,Skia!");
canvas.drawSimpleText(text.c_str(), text.size(), SkTextEncoding::kUTF8, 0, 64, font, paint);

最后运行

Hello Skia


最后修改于 2024-07-17