CocoaPods是什么?
CocoaPods是专门为iOS工程提供对第三方库的依赖的管理工具,通过CocoaPods,我们可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置。直观、集中和自动化地管理我们项目的第三方库。
CocoaPods是使用 Ruby 语言编写的一个作为 iOS 的包管理工具,而RubyGems是 Ruby 的包管理工具。安装CocoaPods需要包管理工具RubyGems安装,而RubyGems是 Mac 自带的工具。关于RubyGems的更多信息,可以参考官方文档。不过,RubyGems中的 Gems 在国内访问速度很慢,不过可以使用Ruby China。如果你想大体了解 Ruby,可以看这篇文章Ruby。读到这里相信你对安装CocoaPods已经有了一定的了解。
CocoaPods会被安装到/Users/wangsuyan/.cocoapods/repos
默认情况下,Pods 项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a 文件即可。 use_frameworks!会编译成一个Pods.framework的文件,而不是.a文件
pod 'Reveal-iOS-SDK', '~> 1.6.2', :configurations => ['Debug']可以指定debug
cocospods语法:
platform:ios,'8.0':
指定平台和最低版本
inhibit_all_warnings!:
忽略所有警告
workspace:
‘项目空间名’: 指定项目空间名
xcodeproj :
‘工程文件名’:指定xcodeproj工程文件名
pod指定版本:
pod 'Objection' :什么版本都行一般是最新版本
pod 'Objection','0.9'
'> 0.1' 高于0.1的任何版本
'>= 0.1' 版本0.1或更高版本
'< 0.1' 低于0.1的任何版本
'<= 0.1' 版本0.1或更低的版本
~ > : 从指定版本到倒数第二位版本号升1为止,比如 ‘~> 1.2.1’是指 1.2.1 <= 版本 < 1.3.0
'~> 0.1.2' 版本0.1.2和0.2版本之间的任意版本,不包括0.2和比0.2更高的版本
'~> 0.1' 版本0.1和版本1.0之间的任意版本,不包括1.0和比1.0更高的版本
'~> 0' 版本0或比版本0更高的版本,这基本上和不指定版本号的效果是一样的。
指定本地路径:
pod 'AFNetworking', :path=>'~/Documents/AFNetworking'
指定主分支:
pod'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git'
指定分支:
pod 'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git', :branch=>'dev'
指定提交版本:
pod'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git', :commit=>'082f8319af'
使用指定的tag:
pod'AFNetworking', :git=>'https://github.com/gowalla/AFNetworking.git', :tag=>'0.7.0'
Podfile.lock文件:
当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致, 这对团队协作来说绝对是个灾难!
pod本地私有库:

souce包括两个文件:PHandle.h,PHandle.m 定义了+(void)PLog{
NSLog(@"csbbbbbbb");
}
download.podspec的生成:pod spec create download ,修改.podspec文件使pod能找到source里面的文件
pod导入.podspec路径:pod 'download', :path => './LocalLib/download/'
执行pod install即可完成pod本地私有库
注意:pod 'download', :path => './LocalLib/download/' 命令要在./LocalLib/download/下有一个名字为download的podspec文件,或者path直接是.podspec的全路径(:path => './LocalLib/download/xxx.podspec')
.podspec:
s.source_files = "*.{h,m}" //源码文件类型
s.source = { :git => "", :tag => "0.01" } //git 地址
s.dependency'AFNetworking','~> 1.0' //依赖的第三方
s.requires_arc = true //是否支持arc
s.frameworks = "QuartzCore", "CoreData" //使用的框架
s.libraries ='xml2','z' //z表示libz.tdb,后缀不需要,lib开头的省略lib,libraries 比如libz,sqlite3.0等,多个用逗号分开
s.vendored_frameworks ='MyFramework.framework','TheirFramework.framework' //己的或者第三方framework,比qqSDK的TencentOpenAPI.framework
s.vendored_libraries ='libProj4.a','libJavaScriptCore.a' //自己的或者第三方.a文件,比如微信SDK的.a文件
s.resources = ['Images/*.png','Sounds/*'] //资源文件
pod远程私有库:
1.创建远程私有索引库(远程存放索引):

pod repo 查看本地索引库
pod repo add LTPodspecs https://gitee.com/HeroHY/LTPodspecs.git
2.创建基础组件库

创建一个空的项目MyProjectBase
在桌面创建一个空的文件夹podtest用来存放文件
在podtest下执行:pod lib create MyProjectBase
编写一个PHLog文件,它的类方法TestLog输出XXX内容放在class下
执行pod install测试
依次执行下列命令:
$ git add .
$ git commit -m '编辑基础库文件'
$ git remote add origin https://gitee.com/HeroHY/MyProjectBase.git (将本地库与远程代码仓库进行关联)
$ git push origin master (提交到远程仓库)
$ git tag '0.1.0' (要与MyProjectBase.podspec文件中的tag值保持一致)
$ git push --tags(将tag提交到远程)
然后验证:pod lib lint --allow-warnings
pod spec lint --allow-warnings
最后将podspec文件提交到本地的私有索引库
pod repo push LTPodspecs MyProjectBase.podspec
3.编写podfile
source 'https://gitee.com/HeroHY/LTPodspecs.git'
source 'https://github.com/CocoaPods/Specs.git'
target 'test' do
pod 'MyProjectBase'
end
总结:cocospods根据podspec文件来导入文件和导入依赖