第一步 安裝依賴以及源碼下載:
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