2023.5更新
先看一遍官方文檔: skia.org/docs/user/build
1.下載skia代碼
(參考https://skia.org/docs/user/download/)
a.git clone https://github.com/google/skia.git
b.執(zhí)行python tools/git-sync-deps,這一步會(huì)根據(jù)BUILD.gn里面的工程下載三方依賴(lài)庫(kù),要下載好一會(huì)。請(qǐng)弄好自己的網(wǎng)絡(luò)環(huán)境,配好git代理
c.bin/fetch-ninja
2.編譯
下載完成后,里代碼面的site/docs/user/build.md有詳細(xì)的編譯步驟
,直接看到ios這一節(jié)
a. 配置編譯參數(shù)
bin/gn gen --ide=xcode out/ios64 --args='target_os="ios" skia_ios_identity=".*Xu.*" skia_ios_profile="skia" is_debug=true skia_enable_gpu=true'
生成的需要指定identity和profile文件,
identity(skia_ios_identity)通過(guò)執(zhí)行security find-identity找到對(duì)應(yīng)能用的開(kāi)發(fā)者的編號(hào),我這上面用的正則匹配
profile(skia_ios_profile)通過(guò)developer官網(wǎng),下載對(duì)應(yīng)的mobileprovision文件。這里要注意要對(duì)應(yīng)包名,工程默認(rèn)包名是com.google.*,需要改成自己profile對(duì)應(yīng)的包名,請(qǐng)修改gn/ios.gni里面的bundle_prefix
b. 編譯skia官方demo
ninja -C out/ios64
這步驟編譯會(huì)有很多.h找不到,我是一個(gè)個(gè)從external里面復(fù)制一份放到編譯出錯(cuò)的目錄下了,本來(lái)想通過(guò)配置extra_cflags配置頭文件搜索路徑但是不生效不知道什么情況,不過(guò)花了點(diǎn)時(shí)間都還是能找到的。最新重編沒(méi)有遇到這個(gè)問(wèn)題了。
然后鏈接的時(shí)候會(huì)報(bào)找不到符號(hào)或者鏈接的庫(kù)。用brew安裝缺失的庫(kù),還有的裝下xcode command line tools也會(huì)有。這樣就能搞全了
c.安裝調(diào)試官方demo
命令行安裝:
os-deploy -b out/ios64/nanobench.app -d --args "--match foo"
Xcode安裝:
由于上面編譯選項(xiàng)中有--ide=xcode,在out目錄下會(huì)生成工程文件。
工程文件編譯的時(shí)候會(huì)報(bào)缺少info.plist,在Build Settings中找到Generate Info.plist File,把No改為Yes即可。
編譯三方demo
編譯完成后,我參考的這個(gè)工程,替換掉out/ios64里我們新編譯出來(lái)的libskia.a和libpathkit.a,還有把include里的頭文件都替換就行了。
https://github.com/yehot/skia-ios-demo/