如何将XCode编译PAG源码实现高效处理?

摘要:最近工作中要使用PAG替换Lottie,为了方便阅读源码,使用XCode对其源码进行了编译。 1 下载源码 编译源码首先要下载源码,有关PAG源码可直接到github上下载。 2 添加相关依赖 下载源码之后,进入到PAG项目根目录,执行如下
最近工作中要使用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源码被你成功编译了!!