1、需要安装的软件
- python2.7 (需要设置至系统PATH环境变量)
- git (需要设置至系统PATH环境变量)
- vs2017
2、需要git clone的代码,命令如下:
git clone https://source.codeaurora.org/quic/lc/chromium/tools/depot_tools
git clone https://gitee.com/yuangu/skia.git
记得将depot_tools所在的目录设置进 系统PATH环境变量
3、初使化skia的工程
注意,因为skia大部分第三方依赖都在Google的服务器上,所以git需要使用ShadowScoks做代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
在你结束本步操作后,可以使用如下命令取消代理:
git config --global --unset http.proxy
git config --global --unset https.proxy
然后cd 到你刚才git 的skia的代码目录下:
python tools/git-sync-deps
相关操作,如图所示:
4、生成vs工程
a、重要:修改skia目录中的 gn/BUILD.gn 中的 "/WX" 为 "/WX-"
b、然后执行
bin\gn gen out\vs2017 --ide="vs2017" --args="is_debug=false target_cpu=\"x86\" win_vc=\"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC\" win_sdk=\"C:/Program Files (x86)/Windows Kits/10\" " --sln="deskiax86"
c、修改生成的toolchain.ninja文件
把下面的代码删除掉。
cmd /c C:/Program Files (x86)/Windows Kits/10/bin/SetEnv.cmd /x86 &&
d、执行编辑
ninja -C out/vs2017
注
- ninja命令由depot_tools,如果出现了没有此命令的话,你检查一下depot_tools是否加入至PATH目录。或者重启系统或者cmd来使用变量生效。
- 如果编译时,出现mspdbcore.dll 找不到等问题,可以参考:https://blog.drawoceans.com/archives/19
5、一些问题
- 可能会出现闪退问题,是断在sk_abort_no_print
void sk_abort_no_print() {
#if defined(SK_BUILD_FOR_WIN) && defined(SK_IS_BOT)
// do not display a system dialog before aborting the process
_set_abort_behavior(0, _WRITE_ABORT_MSG);
#endif
#if defined(SK_DEBUG) && defined(SK_BUILD_FOR_WIN)
__debugbreak();
#elif defined(__clang__)
__builtin_debugtrap();
#else
abort();
#endif
}
解决方法 找到如下代码
#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
#ifdef NDEBUG
#define SK_RELEASE
#else
#define SK_DEBUG
#endif
#endif
更换成
#if !defined(SK_DEBUG) && !defined(SK_RELEASE)
#ifdef NDEBUG
#define SK_DEBUG
#else
#define SK_RELEASE
#endif
#endif
2、无法铺满整个渲染框
将SkMatrix::kCenter_ScaleToFit 替换成 SkMatrix::kFill_ScaleToFit