内容简介:CarthagePods -- 一个整合 CocoaPods 和 Carthage 一起使用的工具
最近写了个工具 CarthagePods ,将 Carthage
和 CocoaPods
配合一起使用。介绍我这个 工具 之前,先看看我们 iOS 开发最常用的两个包管理器吧。
Carthage
Carthage 有个重要的优点,它可以把依赖的库都编译成 framework
,这样一来就不需要每次编译工程,都去编译一遍依赖的第三方库。
但是也存在一些缺点,例如:
- 使用的依赖库比较多,集成起来就比较麻烦。
-
framework
对@IBDesignable
和@IBInspectable
并不那么友好 =。= 。
CocoaPods
CocoaPods
正好可以解决 Carthage
的不足。 CocoaPods
使用起来非常方便,因为他不会把依赖库编译提前编译成 framework
, 所以也不存在对 @IBDesignable
和 @IBInspectable
不友好的问题。
当然,他不会把第三方库编译成功 framework
这也会导致工程编译起来比较慢。
取长补短
前段时间虾神在他的公众号中发布了一篇文章则提供类一个解决方案 I have a pod, I have a carthage, En… 。
然而操作起来还是略微麻烦=。=
这样我们就可以将使用 @IBDesignable
和 @IBInspectable
属性的库还是使用 CocoaPods
来管理。没使用的则使用 Carthage
。
方案流程
虾神文章中大概的实现方案流程是这样的:
- 先使用
Carthage
把一些依赖库编译成framework
。 - 通过
CocoaPods
把framework
打包repo
- 最后通过
CocoaPods
把所有的依赖库都 install 了。
虾神的方案很酷,但是使用起来还是略为麻烦。所以我决定使用 Ruby
来把这些流程串联起来,只需要简单的敲个 install
就能完成这些工作 ^-^
为什么使用 Ruby
?因为我想学 Ruby
,拿来练手=。=
CarthagePods
安装方法
gem install CarthagePods
介绍
接下来简单介绍一下 CarthagePods
的一些命令吧。
init
会生成 CocoaPods
的 Podfile
文件, Carthage
的 Cartfile
文件, 和一个 CPodfile
。
大家使用的时候可以和往常使用 CocoaPods
和 Carthage
,一样把依赖的库配置到对应的文件中。
那 CPodfile
又是什么鬼?
我在使用我最常用的库 RxSwift
时,发现了一个问题。 RxSwift
使用 Carthage
编译时会生成一个 RxTest
的 framework
。如果你工程中包含了这个 framework
会导致你打包失败。所以 CPodfile
则提供了一种方法把需要过滤的 framework
给过滤掉。
使用方法如下:
filterFramework ['RxTest.framework', 'RxBlocking.framework']
install
install 命令则是分别执行 CocoaPods
的 install
命令 和 Carthage
的 bootstrap
命令。
考虑到保留两个工具的功能,这里尽可能保留了两个工具 install 时的参数。
熟悉 Carthage
可能会发现,少了个 --platform
。
我们使用 CocoaPods
是其实会在 Podfile
中直接定对应的平台,所以这里的参数,工具会直接在 Podfile
中获取。
update
这个命令就是分别执行 CocoaPods
和 Carthage
的 update
命令。功能与 install 相似。
遗留问题
- 两个库,一个使用
CocoaPods
, 一个使用Carthage
去 install,如果这两个库同时依赖于另外一个库。这种场景可能会产生问题。(这个问题会在后续版本解决) - 我开发的时候希望能使用
RxTest
,发布的时候把它过滤掉。这个目前还是比较难办的。
不过退一步想,我们遇到这些情况还是都可以几乎无痛的,把一些库切换使用 CocoaPods
做依赖管理。
最后欢迎大家尝试使用我这个工具,欢迎 Issue 。我会尽我最大努力去维护它。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Next框架与主流工具的整合(二)—— 完善与优化
- 整理js开发中的实用小工具(一):做一个整合存储的小工具
- CarthagePods -- 一个整合 CocoaPods 和 Carthage 一起使用的工具
- C# 整合 Headless Chrome 的好工具 - Puppeteer Sharp
- VulnWhisperer:数据可被ElasticSearch索引的漏洞数据及报告整合工具
- Mapbox Beta为开发者提供了将AR整合到汽车和移动设备导航应用中的工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。