终于到了最后一步的源码切换,时长有点拖得太久了。。。废话不多说,直接上正文:
podspec
podspec中spec的全称是“Specification”,说明书,也就是用来描述一个pod库的相关说明信息的,其实实质上podspec也是一个ruby的脚本,既然是一个脚本,那么我们就能跟写代码一样书写对应代码让其实现一定的功能,例如:
// 打印hello world
a = "puts 'hello world'"
eval a
另外由于ruby有环境变量的概念,eg:ENV[‘XXXX’]
这就相当于全局的字典一样ENV[#{key}]=#{value}你给他一个key和value,他会帮你存起来。
无论你在程序的哪里调用都可以访问到。
那么我们就可以利用这个环境变量做一些事情,比如:
// 根据不同环境变量书写if else,打印不同日志
ENV['LOG_TYPE'] == 1
# 表现形式
if ENV['LOG_TYPE'] == 1
// 打印log1
else
// 打印log2
end
那么我们同样可以利用配置这个全局变量来切换源码啦,自行书写不再赘述
源码切换原理
怎样指定使用源码还是.framework/.a呢?
1.利用s.source 指向:git/:http来进行切换
通过配置s.source指向:git/:http来进行切换
if ENV['IS_SOURCE'] == 1
s.source = { :git => '源码git地址' , :tag = '0.0.1'}
s.resource = 'XXXXXX.{h,m}'
else
s.source = { :http => '打包下载http地址' }
s.resource = 'XXXXXX.{h}'
s.framework = 'WYKit.framework'
end
利: 下载和安装完全交由pod来处理,我们只需要配置资源地址即可
利: 静态库和源码隔离
弊: 源码和静态库切换,需要去删除本地的文件才能够进行切换
2.利用s.prepare_command 来执行静态库下载脚本
s.prepare_command = 'xxxx' # xxxx对应你写的脚本
if ENV['IS_SOURCE'] == 1
s.resource = 'XXXXXX.{h,m}'
else
s.resource = 'XXXXXX.{h}'
s.framework = 'xxxxxx.framework'
end
利: 源码和静态库共存,切换源码/静态库不需要清除缓存。
弊: 无法做到源码和静态库隔离,放权受限
弊: 我们自己要做到静态库下载和静态库校验问题
使用哪种方法请读者自行选择
网友评论