如果管理第三方库代码?
在iOS
的开发中,使用第三方库是不可避免的。那么如果管理第三方库的代码呢?
- 直接当做源文件集成在代码中,在项目中给个文件夹,比如
sdk
之类的。 - 采用
Carthage
,这是GitHub
推出的一个第三方库管理工具。 - 采用
CocoaPods
,这个出来的比较早。
至于怎么选择,应该根据具体情况而定:
- 如果第三方库比较少,比如支付
SDK
,本身就是一个framework
,给别人调用,那么第1个方案反而是合适的。也就是不借助工具,自己管理第三方源代码。 - 如果是
swift
,并且是iOS8
以上,并且不想全自动,想要更多自主权,只要半自动就可以,那么Carthage
是个不错的选择。 - 如果不是以上两种情况,想省心点,那么选
CocoaPods
,目前用得人也是最多的。
结论:
- 从理念上讲,本人赞同
Carthage
,对于第三方库,只要引入framework
就可以了,没有必要将源文件导入工程。 - 如果要源码,不如直接用第1种方式,放一个
SDK
目录,没必要用管理工具。 - 从企业实践,使用人数,人员熟悉程度,成熟度,资源数量等各方面综合考虑,并且我们的开发语言还是
Object-C
,所以正式项目中,最终还是选择CocoaPods
作为第三方库的管理工具。 - 至于
Swift + Carthage
的模式,可以在自己的私人项目中进行实践。
如何安装CocoaPods
?
这是一个用Ruby
写的iOS
包管理工具,所以要用Ruby
来安装。
Mac
系统默认就安装好了Ruby
,所以比较省心。关于安装,网上好多文章都太老了,现在不能用了。下面这篇文章是可以用的,推荐。最新的CocoaPods的使用教程(一)
- 因为墙的原因,第一步要更换一下数据源,不然连接不上。
// 1.移除掉原有的源
gem sources --remove https://rubygems.org/
//2.淘宝的源已经不更新维护了,现在使用ruby-china的源哦
gem source -a https://gems.ruby-china.org
// 3.验证是否替换成功
gem sources -l
// 如果显示下面输出就说明正确:
*** CURRENT SOURCES ***
https://gems.ruby-china.org
-
Gem
是管理Ruby
库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级Gem
// 更新升级gem,国内需要切换源。需要花点时间等待安装完毕
sudo gem update --system
// 查看gem版本
gem -v
// 版本输出
2.6.14
- 以前的安装命令不行了,会报权限错误。需要指定位置
// 安装最新版本
sudo gem install -n /usr/local/bin cocoapods
// 查看版本,看看是否安装成功
pod --version
// 版本输出
1.5.3
- 更新
Podspec
索引文件,这个是以前遇到最麻烦的地方。所有的第三方开源库的Podspec文件都托管在https://github.com/CocoaPods/Specs
一般情况下,需要把这个Podspec
保存到本地,可以带来很多方便,只是这个Podspec
比较大,有300M 左右,并且没有很好用的国内镜像源。
不过好在gitHub没有被墙,多花点时间,还是能够下载完的
// 保存`Podspec`到本地。耐心等待,现在能显示下载进度,比较不错。以前一片空白
pod setup
// 显示下载进度,比如
Receiving objects: 57% (1325833/2286454), 195.03 MiB | 291.00 KiB/s
// 下载完了,比如这样:
Receiving objects: 100% (2286454/2286454), 554.06 MiB | 430.00 KiB/s, done.
Resolving deltas: 100% (1314695/1314695), done.
下载的本地位置是~/.cocoapods/repos/master
,完成后可以切换过去看. 这是一个隐藏目录,可以通过Find -> goto
~/.cocoapods/repos
跳转过去。
如何使用?
- 切换到工程目录,执行命令
pod init
,生成文件Podfile
,修改文件内容,以适合工程的需要。
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0' # 最低支持版本,跟工程保持一致就可以了
inhibit_all_warnings! # 去掉第三方库的warning
target 'Wallet' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
use_frameworks! # .a是老黄历了,现在基本上是framework
# Pods for Wallet
pod 'AFNetworking', '~> 3.0' # 网络库,基本上都用这个
pod 'Masonry' # 代码加限制
pod 'YYKit' # 包括YYModel,YYCache等,几个比较实用的工具
pod 'SVProgressHUD' # 转菊花,比MBProgressHUD方便使用
pod 'MJRefresh' # 表格上拉下拉
pod 'SDWebImage', '~> 4.0' # 图片库,基本上都在用
pod 'SAMKeychain' # key chain,存用户名密码
pod 'KVOController' # 方便实用kvo
pod 'FMDB' # 数据库
end
注释应该用
#
,不能用//
,否则安装不了,有语法错误
- 编辑完
Podfile
之后,执行pod install
命令,下载第三方库,稍等一下就好。下载完之后,工程目录会变样。一般是像下面这样的:
文件
Podfile.lock
,目录Pods
,文件xxx.xcworkspace
都是自动新增的,不要动。以后,要双击xxx.xcworkspace
打开工程。
这些文件都加入版本控制,这样只要一个人管理就可以了,其他人都不需要安装CocoaPods
,直接更新代码就可以用了。更新第三方库,使用命令
pod update
。这个命令会默认执行pod repo update
,这会导致速度很慢。如果想快一点,可以添加参数pod update --no-repo-update
如何创建CocoaPods的私有库?
下面这篇文章写得很详细,可以照着做
最新的CocoaPods的使用教程(二)
常用的第三方库有哪些?
网上已经有很多人做过总结,就不在重复了,把他们的文章链接在这里,需要的时候方便查阅。