小记WebKit的构建

赵裕(vimerzhao)
由于工作需要,计划研究下WebKit的Skia渲染后端,分析cmake容易发现,只有GTK/WPE这两个PORT会开启Skia的渲染后端。 之前从https://github.com/WebKit/We

Skia下SK_DEBUG内联的坑

赵裕(vimerzhao)
以下代码可能出现看起来诡异的错误 { auto data = image->encodeToData(); std::stringstream ss; ss << count++ << "_output.png"; if (data) { SkFILEWStream out(ss.str().c_str()); out.write(data->writable_data(), data->size()); } } 错误如下: * thread #3, name = 'RasterThread', stop reason = signal SIGILL: illegal operand * frame #0: 0x000000000c02edd4 Sxxxx`sk_abort_no_print() at SkMemory_malloc.cpp:51:5 frame #1: 0x000000000bbbee39 Sxxxx`SkNVRefCnt<SkData>::~SkNVRefCnt(this=0x00007fffafdff530)::'lambda'()::operator()() const at SkRefCnt.h:165:9 frame #2: 0x000000000bbbec35 Sxxxx`SkNVRefCnt<SkData>::~SkNVRefCnt(this=0x00007fffa8006090) at SkRefCnt.h:165:9 frame #3: 0x000000000bbbd8ba Sxxxx`SkData::~SkData(this=0x00007fffa8006090) at SkData.cpp:37:1 具体是因为这个ASSERT: ~SkNVRefCnt() { #ifdef SK_DEBUG int

Mac与Windows混合开发体验优化

赵裕(vimerzhao)
后面的工作中,可能要经常使用Windows开发,而过去一段时间,主要使用iMac开发,个人还是更习惯用iMac作为主力开发设备: 屏幕大且清晰 键盘组合更科学,Windows的Win键比较影响,Mac的C

vcpkg源码之install流程

赵裕(vimerzhao)
简介 vcpck install的主要工作是"构建(如果需要)和安装依赖包",是vcpkg中最关键、也是使用者感知最明显的环节,有必要对其流程有一个更底层的理解,这样对一些问题的理解也将更加深

vcpkg简介

赵裕(vimerzhao)
vcpkg要解决什么问题 C++语言的历史非常悠久,导致其在某些方面的使用体验非常差,比如三方库的依赖。 比如要引入一个skia库,我们大概有以下办法: 源码集成,会有几个问题 但Skia的构建是GN组织的,

通过vcpkg构建icu-for-android问题一则

赵裕(vimerzhao)
我们的项目通过vcpkg依赖了icu,但在构建Android平台的icu制品时,却失败了。 Installing 15/45 icu:arm-neon-android@73.1#1... Building icu:arm-neon-android@73.1#1... /root/.cache/vcpkg/registries/git-trees/eaccfc7689fb55d4badf3d2321a8be62ae5be84e: info: installing overlay port from here -- Downloading https://github.com/unicode-org/icu/releases/download/release-73-1/icu4c-73_1-src.tgz -> icu4c-73_1-src.tgz... -- Extracting source /data/landun/workspace/tdf_build_env/.vcpkg/downloads/icu4c-73_1-src.tgz -- Applying patch disable-escapestr-tool.patch -- Applying patch remove-MD-from-configure.patch -- Applying patch fix_parallel_build_on_windows.patch -- Applying patch fix-extra.patch -- Applying patch mingw-dll-install.patch -- Applying patch disable-static-prefix.patch -- Applying patch fix-win-build.patch -- Using source at /data/landun/workspace/tdf_build_env/.vcpkg/buildtrees/icu/src/c-73_1-src-72ff750ba0.clean --

如何利用ReleaseApk辅助排查性能问题

赵裕(vimerzhao)
背景 最近收到反馈,同样的场景,Android打开明显比iOS卡顿,实际打开也确实如此。故此要进一步排查这个问题。 我们的业务工程非常庞大,之前全量编一次竟然花了快2h。 此外,我负责的是底层渲染模块,此类

无妄之灾:记录一个奇怪的codelldb问题

赵裕(vimerzhao)
背景:最近打算为项目增加一些测试,重构后的项目比较适合用VSCode + codelldb调试,因为编译适合放在命令行(有一些环境变量依赖),VSCode直接启动产物并调试就行了,launch.json也

Skia升级小记m104->m122

赵裕(vimerzhao)
最近需要把Skia进行一次升级,首先查看下接口变动,See: RELEASE_NOTES.md 大部分都是接口的小调整,基本没什么难度,但注意m122的一个改动: SkFontMgr::RefDefault() has been deleted. Clients should instantiate and manage their own SkFontMgrs and use them to explicitly create SkTypefaces 找到这个改动的原因: Remove default SkFontMgr [305780908] - Skia 是

Android Gradle使用自定义的CMake

赵裕(vimerzhao)
背景 最近重构项目的CMake后,开始了Android平台的适配,踩了些坑,简单记录下。 Cmake版本过低 test 重构后的CMake使用了一些高版本的特性,比如: CMP0135: New in version 3.24. -> https://cmake.org/cmake/help/latest/policy/CMP0135.html FILE_SET <set-name>: New in version 3.23 -> https://cmake.org/cmake/help/latest/command/install.html 但Android