最近工作中要使用PAG
替换Lottie
,为了方便阅读源码,使用XCode
对其源码进行了编译。
1 下载源码
编译源码首先要下载源码,有关PAG
源码可直接到github
上下载。
2 添加相关依赖
下载源码之后,进入到PAG
项目根目录,执行如下脚本:
bash
./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
,如果输出如下版本信息,说明已经安装:
bash
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
信息:
bash
echo "当前 PATH: $PATH"
再次编译PAGViewer
Target
,仍然失败,但是XCode
的Report
面板已有输出信息:
将上面XCode
的PATH
信息拷贝保存下来,然后在Mac
终端运行which node
命令,查看Mac
上node
的安装目录:
bash
localhost:~$ which node
/opt/homebrew/bin/node
可以验证,Mac
上的node
安装目录/opt/homebrew/bin
不在XCode
的PATH
环境变量中。
为了解决这个问题,我们需要将这个目录添加到XCode
的环境变量中,方式就是在刚才的脚本里,添加一条export
语句:
完成之后,会发现编译tgfx-vendor
也会出现同样的脚本问题,也是按照上述方式解决:
最后,再次编译,就会发现PAG
源码被你成功编译了!!