最近工作中要使用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编译到自己手机上:

当设置完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的路径,不在XCodePATH环境变量下。

为了查看XCodePATH环境变量,可以按照下图进行设置,将XCodePATH环境变量输出到XCodeReport面板:

上图中CMake PostBuild Rules会执行一个脚本,正是这个脚本在编译中报错。

在脚本中添加echo命令,输出XCodePATH信息:

echo "当前 PATH: $PATH"

再次编译PAGViewer Target,仍然失败,但是XCodeReport面板已有输出信息:

将上面XCodePATH信息拷贝保存下来,然后在Mac终端运行which node命令,查看Macnode的安装目录:

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

可以验证,Mac上的node安装目录/opt/homebrew/bin不在XCodePATH环境变量中。

为了解决这个问题,我们需要将这个目录添加到XCode的环境变量中,方式就是在刚才的脚本里,添加一条export语句:

完成之后,会发现编译tgfx-vendor也会出现同样的脚本问题,也是按照上述方式解决:

最后,再次编译,就会发现PAG源码被你成功编译了!!

XCode 编译 PAG 源码的更多相关文章

  1. Windows编译Nginx源码

    Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...

  2. 重新编译jdk源码,启用debug信息

    我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...

  3. (转载)Linux如何编译安装源码包软件

    一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...

  4. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  5. Android反编译(一)之反编译JAVA源码

    Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具  dex2jar   http://code.go ...

  6. [原]在win上编译 subversion 源码实践Tonyfield的专栏

    (百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...

  7. 在Mac mini上编译Android源码

    参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...

  8. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  9. [原]编译Android源码过程中遇到的问题

    编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...

  10. CentOS6.5上编译OpenJDK7源码

    本文地址:http://www.cnblogs.com/wuyudong/p/build-openjdk7.html,转载请注明源地址. 采用开源的OpenJDK版本,获取其源码的方式有两种: 通Me ...

随机推荐

  1. kettle从入门到精通 第六十课 ETL之kettle for循环处理每条数据,so easy!

    1.kettle原生是支持for循环处理的,无需通过javascript脚本或者java脚本开发for循环控制.当然如果想通过脚本挑战下也是可以的. 本节课主要讲解如何通过kettle中的job来实现 ...

  2. kettle从入门到精通 第三十八课 kettle 分页全量同步(数据量大)

    1.上一课我们学习了在数据量小的情况下的全量同步示例,本次我们一起学习下kettle 分页全量同步. 2.kettle分页全量同步示例依然基于test数据库,从t1表全量同步数据到t2表,由于t1表的 ...

  3. edge浏览器禁用搜索工具栏或七七八八的东西

    edge浏览器禁用搜索工具栏或七七八八的东西 在浏览器地址里输入: edge://flags/#edge-show-feature-recommendations 把"Show featur ...

  4. 快速监控 Oracle 数据库

    Oracle 数据库在行业内应用广泛,通常存放的非常重要的数据,监控是必不可少的,本文使用 Cprobe 采集 Oracle 监控数据,极致简单,分享给大家. 安装配置 Oracle 简单起见,我使用 ...

  5. 算法金 | 一个强大的算法模型,GP !!

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 高斯过程算法是一种强大的非参数机器学习方法,广泛应用于回归.分类和优化等任务中.其核心 ...

  6. Excel Wps 透视表去重计数方法

    Excel Wps 透视表去重计数方法 在处理表格,遇到处理根据某个列去重后统计数量,而不是仅仅统计数量.在网上查找资料,不确定EXCEL或者WPS某个版本可以支持该功能的实现. 折中的方案,分两步来 ...

  7. CAT监控指标

    CAT监控指标 CAT 是基于 Java 开发的实时应用监控平台.官方文档:https://github.com/dianping/cat CAT提供以下几种报表:Transaction报表 一段代码 ...

  8. sqlUtil

    package com.cmbchina.monitor.utils;import com.alibaba.druid.sql.ast.SQLStatement;import com.alibaba. ...

  9. yolov1-yolov5 网络结构&正负样本筛选&损失计算

    学习yolo系列,最重要的,最核心的就是网络模型.正负样本匹配.损失函数等三个方面.本篇汇总了yolov1-yolov5等5个版本的相关知识点,主要看点是在yolo框架搭建.初学者可以通过相关篇章搭建 ...

  10. Ethercat设备数据 转 EthernetIP项目案例

    1         案例说明 1.   设置网关采集EtherCAT设备数据 2.   把采集的数据转成EthernetIP协议转发给其他系统. 2        VFBOX网关工作原理 VFBOX网 ...