Linux(ubuntu 20)下将Skia编译为Webassembly(Wasm)


第一步 安装依赖以及源码下载:

emsdk:

git clone https://github.com/emscripten-core/emsdk.git

depot_tools:

git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'

将depot_tools目录添加到环境变量 : export PATH="${PWD}/depot_tools:${PATH}"

Tip : 使用命令“ninja --version”检查ninja是否可用,ninja位于depot_tools目录

python2:

sudo apt install python2

由于skia编译过程中使用的是python2,请确保python2的使用优先级高于python3

使用以下命令设置:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 

其它依赖:

sudo apt-get install cmake

sudo apt-get install default-jre

sudo apt install llvm 

sudo apt install clang 

 

第二步 配置:

由于skia与emsdk的源码经常变动,使用最新的skia、emsdk进行编译失败的概率很大

可以在skia在github上的提交日志中找到这skia提交对应的emsdk的版本https://github.com/google/skia/commits?author=kjlubick

比如:

 

可以使用skia的 2e24270的提交与emsdk 2.0.20进行编译

skia配置

cd切换到skia代码目录,使用命令 : git reset 2e24270

emsdk配置

cd切换到emsdk的代码目录

使用命令:

./emsdk install 2.0.20

./emsdk activate 2.0.20

设置环境变量(临时)

source ./emsd_env.sh

注意:source ./emsd_env.sh设置的环境变量仅当前控制台可用,下次再启动emsdk需要再次执行该条命令。这样子做的目的是不污染系统的环境。

查看emsdk是否生效:

emcc --version

若是切换过emsdk的版本,需要清空编译缓存:

emcc --clear-cache

第三步  编译:

cd切换到skia目录

同步依赖:

python2 tools/git-sync-deps

生成构建文件:

bin/gn gen out/Static --args='is_official_build=true'

bin/gn gen out/Shared --args='is_official_build=true is_component_build=true'

这里参数代表的意义在skia官网(英语)有更详细的说明:https://skia.org/docs/user/build/

开始编译:

cd modules/canvaskit

./compile.sh  no_skottie no_particles no_font

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM