原文连接node
CocoaPods是iOS开发、macOS开发中的包依赖管理工具,效果如Java中的Maven,nodejs的npm。ios
CocoaPods是一个开源的项目,源码是用ruby写的,源码地址在GitHub上。git
不管是作iOS开发仍是macOS开发,都不可避免的要使用到一些第三方库,优秀的第三方库可以提高咱们的开发效率。若是不使用包依赖管理工具,咱们须要手动管理第三方包,包括但不限于:github
以上工做虽然简单,可是若是项目中的第三方库较多,须要耗费大量的时间和精力。CocoaPods能够将咱们从这些繁琐的工做中解放出来。npm
安装CocoaPods比较方便。一般状况下,macOS都安装了ruby,直接使用ruby 的gem命令便可安装CocoaPods。xcode
使用以下命令能够查看有没有安装ruby:ruby
// 若是能正确的输出版本号,则说明ruby已经正确安装
ruby --version
复制代码
使用以下命令能够查看gem的版本号:bash
// 该命令会输出gem的版本号
gem --version
复制代码
若是gem的版本号太低,安装CocoaPods可能会失败。因此在安装CocoaPods以前能够升级一下gem,使用以下命令:网络
// 更新gem
sudo gem update --system
复制代码
另外须要注意的是,ruby的软件源https://rubygems.org 使用的是亚马逊云的服务,国内普通网络是不能访问的。若是不能访问,能够将ruby的源换成国内淘宝的源,命令以下:框架
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
复制代码
操做完后,能够验证下更换源是否成功,命令以下:
// 若是只有一个淘宝的源,说明更换源成功
gem source -l
复制代码
以上全部工做都完成以后,如今能够安装CocoaPods了,命令以下:
// 安装CocoaPods
sudo gem install cocoapods
复制代码
安装成功后,在使用以前,还须要对CocoaPods初始化,命令以下:
// 这一步花费的时间比较久,耐心等待便可
pod setup
复制代码
测试一下CocoaPods有没有安装成功:
// 若是能正确显示版本号,说明CocoaPods安装成功
pod --version
复制代码
CocoaPods主要是用于iOS项目、macOS项目管理第三方框架,所以在介绍如何使用CocoaPods时,须要结合iOS项目或者macOS项目。这里新建一个iOS项目TestCocoaPods。
touch Podfile
复制代码
新建Podfile后以下图:
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'TestCocoaPods' do
pod 'SDWebImage', '~> 4.3.2'
end
复制代码
固然能够增长更多的第三方库,上述示例中只增长了1个,是SDWebImage。
Podfile文件中须要写明平台,是iOS仍是osx(macOS),以及第三方库所要支持的系统最低版本号。以后是target,一个Podfile中能够有多个target。好比说插件开发中,主项目和插件项目所依赖的包多是不一样的,就能够写两个target,分别设置依赖的第三方库。须要导入一个第三方库,只须要
pod 'package name', 'version number'
复制代码
便可。版本号有多种表示方式,这里简单介绍几种:
(1)'>=1.0' 最低版本号为1.0
(2)'<=1.0' 最高版本号为1.0
(3)'~>1.0' 兼容1.0的版本的最新版本
一般状况下使用 ~> 的方式。 4. 安装所依赖的第三方库。安装使用的方式是命令行,在该目录下执行下述命令便可:
pod install
复制代码
安装以后会发现该目录下有较大的变化,以下图:
多了Pods目录,且Pods目录里面也是一个单独的工程。
多了TestCocoaPods.xcworkspace文件,之后打开TestCocoaPods项目时,须要打开TestCocoaPods.xcworkspace而不是TestCocoaPods.xcodeproj。
打开TestCocoaPods.xcworkspace后,能够发现,里面包含两个工程,分别是TestCocoaPods和Pods。
在TestCocoaPods中使用第三方库,直接import便可。 5. 当有需求增长或者删除依赖的第三方库时,直接修改Podfile文件便可,修改完毕以后,执行命令:
pod install
复制代码
便可。
若是有需求修改依赖的第三方库的版本号,修改完毕以后,执行命令:
pod update
复制代码
便可。
在使用CocoaPods时,能够提早检查第三方框架是否在CocoaPods的管理之下,使用的命令是search:
pod search 框架名
复制代码
这是我search YYWebImage的结果:
CocoaPods的使用相对来讲是比较简单的。那么CocoaPods是如何完成这些工做的?以及为什么生成了一个Pods工程?
实际上,CocoaPods是将全部依赖的第三方库都放到了Pods项目中
全部的源码管理工做从住项目转移到了Pods项目中。
Pods项目最终会编译成一个libPods-项目名.a的文件,主项目只须要依赖这个.a文件便可。
对于libPods-TestCocoaPods.a这个文件,能够将其理解为各个第三方库的.a文件的集合。在本例中,libPods-TestCocoaPods.a就是libPureLayout.a和libSDWebImage.a的集合。
下面介绍一下如何让本身的开源项目支持CocoaPods。
首先,须要在gitHub上新建仓库,新建仓库时记得选择开源协议,一般选择MIT,另外就是设置成项目为public。这里新建一个仓库ACMoreResponseButton。
记得选择开源协议为MIT:
开源协议有多种,如MIT、BSD等,常见的有6种,关于这6种开源协议的区别,网上有一张图描述的是很是清楚的,这里贴一下:
能够看到,MIT许可证是要求最不严格的许可证,能够给其余开发者更大的空间。这也是为什么多数开源框架都使用MIT许可证的缘由。
使用git clone命令,将gitHub上的仓库克隆到本地:
git clone https://github.com/acBool/ACMoreResponseButton.git
复制代码
克隆完以后,在本地仓库上新建项目,并完成对应的功能。以后,使用git add、git commit、git push命令,将本地的修改提交,而且推送到远程仓库,这些步骤再也不详细介绍。
凡是支持CocoaPods的开源库,都须要具有podspec文件,podspec文件能够理解成是对该开源库的描述,包括做者信息,项目主页等。新建podspec文件使用下述命令:
pod spec create ACMoreResponseButton
复制代码
新建podspec以后:
podspec文件新建以后,里面会有一些信息,能够看作是一个模板,咱们只须要稍微对podspec的文件作改动便可。这里贴一下我修改以后的podspec文件:
s.name = "ACMoreResponseButton"
s.version = "1.1.0"
s.summary = "This is a moreResponseArea Button"
s.homepage = "https://github.com/acBool/ACMoreResponseButton"
s.license = "MIT"
s.author = { "wmn" => "acbool@163.com" }
s.platform = :ios, "9.0"
s.source = { :git => "https://github.com/acBool/ACMoreResponseButton.git", :tag => "1.1.0" }
s.source_files = "MoreResponseButtonExample/MoreResponseButtonExample/ACMoreResponseButton/*"
s.exclude_files = "UIKit"
s.requires_arc = true
复制代码
podspec文件中能够作更多的配置,若是想要了解更多,能够参考gitHub上一些比较好的开源库,看下podspec文件是怎么写的。
在上面的podspec文件中注意到,tag值为1.1.0,所以咱们须要在分支上新建一个tag,而且将该tag推送到远程仓库,命令以下:
// 新建tag
git tag 1.1.0
// 将本地的tag推送到远程仓库
git push --tags
git push
复制代码
这里的tag值须要和podspec中写的保持一致。
在将开源库提交至CocoaPods以前,咱们须要验证一下podspec文件,验证命令以下:
pod spec lint ACMoreResponseButton.podspec
复制代码
若是验证不经过,会提示有几个警告,有几个error,且警告信息,error信息都会标识出来。须要注意的是,不管是警告仍是error,都须要解决。
若是验证经过,会提示以下图:
注意,只有podspec文件验证经过后,才能将开源库提交至CocoaPods,不然即便提交了也不会成功。提交CocoaPods的命令以下:
pod trunk push ACMoreResponseButton.podspec
复制代码
提交成功以后以下图:
注意,若是以前没有提交过开源库到CocoaPods,须要先注册一下。注册的命令为:
// 注意将邮箱名和昵称替换
pod trunk register test@163.com '昵称名' --description='描述'
复制代码
执行完毕后,CocoaPods会给对应的邮箱发送一封确认邮件,点击邮件中的确认连接便可。注册成功后,再执行上面的提交步骤。
在公司项目中,有时一些通用的功能会封装成框架,这些框架也是能够支持CocoaPods的。所不一样的是,咱们但愿这些框架只为公司内部使用,并非开源的,能够称之为私有库。
私有库支持CocoaPods的步骤和公有库基本一致,区别就是不须要提交至CocoaPods,也就是验证podspec文件经过后就能够了。
另外就是,使用私有库时,Podfile文件的写法也有细微区别。Podfile文件中引入私有库时的写法:
// 注意替换私有git域名
pod 'ProjectName',git=>"https://XXX.git"
复制代码