XCode 编译 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
源码被你成功编译了!!
XCode 编译 PAG 源码的更多相关文章
- Windows编译Nginx源码
Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...
- 重新编译jdk源码,启用debug信息
我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...
- (转载)Linux如何编译安装源码包软件
一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- [原]在win上编译 subversion 源码实践Tonyfield的专栏
(百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...
- 在Mac mini上编译Android源码
参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...
- 用vs2013编译lua源码方法(一)
用vs2013编译lua源码方法 来源:网络 编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...
- [原]编译Android源码过程中遇到的问题
编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...
- CentOS6.5上编译OpenJDK7源码
本文地址:http://www.cnblogs.com/wuyudong/p/build-openjdk7.html,转载请注明源地址. 采用开源的OpenJDK版本,获取其源码的方式有两种: 通Me ...
随机推荐
- css之伪元素选择器
注:本博客内容来自尚硅谷禹神的前端入门课程 什么是伪元素? 很像元素,但不是元素(element),是元素中的一些特殊位置. 伪元素语法中的::可以用:,因为css2中没有明确区分伪类和伪元素,但是s ...
- 忘记root密码,破解root密码
破解root用户密码: 1.按e进入内核参数重置界面 2.找到开头Linux的段落,行尾输入rd.break 3.按ctrl+x 进入可选步骤 5.以读写方式挂载sysyroot 修改root密码要挂 ...
- Python结合文件名称将多个文件复制到不同路径下
本文介绍基于Python语言,针对一个文件夹下的大量栅格遥感影像文件,基于其各自的文件名,分别创建指定名称的新文件夹,并将对应的栅格遥感影像文件复制到不同的新文件夹下的方法. 首先,我们来看一 ...
- Mysql 5.7 及以上版本修改密码
登录数据后.选择 mysql 数据库 use mysql; 修改密码 update user set authentication_string=PASSWORD("mynewpasswor ...
- c# .net mvc 使用百度Ueditor富文本框上传文件(图片,视频等)
使用背景: 项目中需要用的富文本框去上传视频,图片的话大部分都是可以的.相对来说,国外的富文本框很成熟.但鉴于文档是英语,这里使用了百度的富文本框. 采用的api的方式,调用接口进行上传文件.话不多说 ...
- 记录nodejs做编辑和新增时候对数据库的操作
server.js文件 const dao = require("../dao/user.dao"); saveDat是个对象自己处理一下 if (updataFlag) {//编 ...
- 填IP那个就算是接口式开发,这回随便填
///////////////////////////////////////////////////////////using namespace std; #include<stdlib.h ...
- json null (空值)不序列化
json null (空值)不序列化 JsonSerializerSettings jsetting = new JsonSerializerSettings(); jsetting.DefaultV ...
- JavaScript执行模型笔记
JavaScript执行模型 引言 JavaScript是一个单线程(Single-threaded)异步(Asynchronous)非阻塞(Non-blocking)并发(Concurrent)语言 ...
- CPU的一、二、三级缓存的区别
引言 概念 缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频 运作,工作效率远远大于系统内存和硬盘.实际工作时,CPU往往 ...