最近工作中要使用PAG
替換Lottie
,為了方便閱讀原始碼,使用XCode
對其原始碼進行了編譯。
1 下載原始碼
編譯原始碼首先要下載原始碼,有關PAG
原始碼可直接到github
上下載。
2 新增相關依賴
下載原始碼之後,進入到PAG
專案根目錄,執行如下指令碼:
./sync_deps.sh
3 構建 iOS PAGViewer 工程
PAG
專案包含多種平臺下的程式碼,包括iOS
,Windows
,Linux
等。我們只關注iOS
。
從根目錄進入到iOS
目錄,雙擊gen_ios
檔案。執行完畢後,目錄下會多出一個PAGViewer.xcworkspace
。
4 設定 XCode 簽名證書
點選PAGViewer.xcworkspace
,進入到PAG
專案工程,做下圖配置,這樣可以將PAGViewer
編譯到自己手機上:
當設定完Team
之後會報錯,可以刪除Bundle Identifier
,然後點選Signing Certification
下面的Try Again
按鈕。
5 編譯
在XCode
中選擇PAGViewer``Target
以及要iPhone
手機,點選進行編譯:
6 指令碼設定
能一帆風順的原始碼編譯經常是可遇而不可求,PAG
原始碼編譯也一樣。
編譯過程中,會收到如下報錯:
看報錯資訊,是在編譯tgfx
專案,執行指令碼時,指令碼命令出錯,出錯的命令是node
命令。
首先檢視Mac
上是否安裝了node
。
在Mac
終端執行node -v
,如果輸出如下版本資訊,說明已經安裝:
v22.5.1
既然安裝了node
,那XCode
為啥還報錯找不到呢?
原因是XCode
執行指令碼時的PATH
環境變數與終端中的PATH
環境變數不同。
XCode
的程序環境變數是由macOS
系統在啟動時設定的,而不是由使用者的Shell
配置檔案(如~/.bash_profile
)直接設定的。
也就是說,我們安裝的node
的路徑,不在XCode
的PATH
環境變數下。
為了檢視XCode
的PATH
環境變數,可以按照下圖進行設定,將XCode
的PATH
環境變數輸出到XCode
的Report
皮膚:
上圖中CMake PostBuild Rules
會執行一個指令碼,正是這個指令碼在編譯中報錯。
在指令碼中新增echo
命令,輸出XCode
的PATH
資訊:
echo "當前 PATH: $PATH"
再次編譯PAGViewer
Target
,仍然失敗,但是XCode
的Report
皮膚已有輸出資訊:
將上面XCode
的PATH
資訊複製儲存下來,然後在Mac
終端執行which node
命令,檢視Mac
上node
的安裝目錄:
localhost:~$ which node
/opt/homebrew/bin/node
可以驗證,Mac
上的node
安裝目錄/opt/homebrew/bin
不在XCode
的PATH
環境變數中。
為了解決這個問題,我們需要將這個目錄新增到XCode
的環境變數中,方式就是在剛才的指令碼里,新增一條export
語句:
完成之後,會發現編譯tgfx-vendor
也會出現同樣的指令碼問題,也是按照上述方式解決:
最後,再次編譯,就會發現PAG
原始碼被你成功編譯了!!