XCode 編譯 PAG 原始碼

chaoguo1234發表於2024-07-28

最近工作中要使用PAG替換Lottie,為了方便閱讀原始碼,使用XCode對其原始碼進行了編譯。

1 下載原始碼

編譯原始碼首先要下載原始碼,有關PAG原始碼可直接到github上下載。

2 新增相關依賴

下載原始碼之後,進入到PAG專案根目錄,執行如下指令碼:

./sync_deps.sh

3 構建 iOS PAGViewer 工程

PAG專案包含多種平臺下的程式碼,包括iOSWindowsLinux等。我們只關注iOS

從根目錄進入到iOS目錄,雙擊gen_ios檔案。執行完畢後,目錄下會多出一個PAGViewer.xcworkspace

4 設定 XCode 簽名證書

點選PAGViewer.xcworkspace,進入到PAG專案工程,做下圖配置,這樣可以將PAGViewer編譯到自己手機上:

image

當設定完Team之後會報錯,可以刪除Bundle Identifier,然後點選Signing Certification下面的Try Again按鈕。

5 編譯

XCode中選擇PAGViewer``Target以及要iPhone手機,點選進行編譯:

image

6 指令碼設定

能一帆風順的原始碼編譯經常是可遇而不可求,PAG原始碼編譯也一樣。

編譯過程中,會收到如下報錯:

image

看報錯資訊,是在編譯tgfx專案,執行指令碼時,指令碼命令出錯,出錯的命令是node命令。

首先檢視Mac上是否安裝了node

Mac終端執行node -v,如果輸出如下版本資訊,說明已經安裝:

v22.5.1

既然安裝了node,那XCode為啥還報錯找不到呢?

原因是XCode執行指令碼時的PATH環境變數與終端中的PATH環境變數不同。

XCode的程序環境變數是由macOS系統在啟動時設定的,而不是由使用者的Shell配置檔案(如~/.bash_profile)直接設定的。

也就是說,我們安裝的node的路徑,不在XCodePATH環境變數下。

為了檢視XCodePATH環境變數,可以按照下圖進行設定,將XCodePATH環境變數輸出到XCodeReport皮膚:

image

上圖中CMake PostBuild Rules會執行一個指令碼,正是這個指令碼在編譯中報錯。

在指令碼中新增echo命令,輸出XCodePATH資訊:

echo "當前 PATH: $PATH"

再次編譯PAGViewer Target,仍然失敗,但是XCodeReport皮膚已有輸出資訊:

image

將上面XCodePATH資訊複製儲存下來,然後在Mac終端執行which node命令,檢視Macnode的安裝目錄:

localhost:~$ which node
/opt/homebrew/bin/node

可以驗證,Mac上的node安裝目錄/opt/homebrew/bin不在XCodePATH環境變數中。

為了解決這個問題,我們需要將這個目錄新增到XCode的環境變數中,方式就是在剛才的指令碼里,新增一條export語句:

image

完成之後,會發現編譯tgfx-vendor也會出現同樣的指令碼問題,也是按照上述方式解決:

image

最後,再次編譯,就會發現PAG原始碼被你成功編譯了!!

相關文章