iOS 开发属于自己的CocoaPods框架
一、主要内容
- 1.1、阐述用CocoaPods使用框架的过程图
 - 1.2、开发框架项目的创建
 - 1.3、创建框架描述 spec
 - 1.4、上传 spec 到gitHub的远程索引库
 - 1.5、查看自己在CocoaPods的注册信息
 - 1.7、使用自己的框架
 
二、阐述用CocoaPods使用框架的过程图
阐述用CocoaPods使用框架的过程图
三、开发框架项目的创建
- 3.1、在gitHub创建一个仓库,名字自己起,我在这里取名为 
JKGCDTimer,并生成其https链接:https://github.com/JoanKing/JKGCDTimer.git
新建仓库入口
框架信息填写
创建成功
 
- 
3.2、cd 进入桌面 ,在终端 clone 项目
git clone https://github.com/JoanKing/JKGCDTimer.git - 
3.3、在你clone生成的JKGCDTimer文件夹里面创建项目 JKGCDTimer
提示:clone生成的文件夹名字必须和项目的名字一致
在你clone生成的JKGCDTimer里面创建项目 JKGCDTimer
 - 
3.4、在JKGCDTimer项目里面创建一个文件夹
JKGCDTimer
WechatIMG233.jpeg
 - 
3.5、上传JKGCDTimer本地的文件 到本地仓库
// 进入本地文件夹 cd 文件夹路径 // 我这里是 cd 上图画红线的JKGCDTimer // 把文件添加到 暂缓区 git add . // 把代码提交到本地仓库 // 如果没建立本地 git ,那么久 `git init`建立本地的git仓库 git commit -m '提交内容说明' - 
3.6、把本地的代码提交到github仓库
// 查看仓库名字 git remote // 添加关联仓库 git remote add origin https://github.com/JoanKing/JKRichText.git //推送到github仓库 git push origin master - 
3.7、提示:如果在 2.5中的git remote add origin ---- 报错:fatal: remote origin already exists,处理办法如下
- 1、先输入$ git remote rm origin
 - 2、再输入$ git remote add origin https://github.com/JoanKing/JKRichText.git 就不会报错了!
 - 3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section ‘remote.origin’. 我们需要修改gitconfig文件的内容
 - 4、找到你的github的安装路径,找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
 
 - 
3.8、
3.5与3.6可以使用Xcode提交
3.5 与 3.6 可以使用Xcode提交
- 提示:第一次提交会 弹出框 让你输入你的 
gitHub名字与密码 
 - 提示:第一次提交会 弹出框 让你输入你的 
 
四、创建框架描述 spec 文件
- 
4.1、有关 spce 文件里面的内容不懂的可以查看CocoaPods Guides
CocoaPods Guides
 - 
4.2、创建spec 文件(create后面的名字一般是你仓库的名字)
cd 进入桌面JKRichText文件夹 // 创建 spec 文件 pod spec create JKRichText 
创建spec 文件
- 
4.3、修改刚刚创建的
spec文件,我创建的是JKGCDTimer.podspec
修改刚刚创建的 `spec` 文件
 - 
4.4、spec里面的具体内容,也可以到 guides.cocoapods 的 podspec查看
spec里面的具体内容
Pod::Spec.new do |spec| spec.name = 'Reachability' spec.version = '3.1.0' spec.license = { :type => 'BSD' } spec.homepage = 'https://github.com/tonymillion/Reachability' spec.authors = { 'Tony Million' => 'tonymillion@gmail.com'} spec.summary = 'ARC and GCD Compatible Reachability Class for iOS and OS X.' spec.source = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' } spec.source_files = 'Reachability.{h,m}' spec.framework = 'SystemConfiguration' s.ios.deployment_target = "8.0" end- 
self.name
名字= 'JKGCDTimer' - 
self.version
版本= '0.0.1' (这个在后面会阐述) - 
self.summary
简介= "JKGCDTimer." - 
s.description(
详细的描述) = "JKGCDTimer,这个是详细的描述,内容一定要比 summary 长,不然会报错" - 
s.homepage(
框架的首页地址) = "https://github.com/JoanKing/JKGCDTimer"
框架的首页地址
 - 
s.license(
协议) = "MIT" - 
s.author(
作者) = { "JoanKingWC" => "2318151015@qq.com" },前面写名字,后面写邮箱地址 - 
s.ios.deployment_target = "8.0"
 - 
s.source(
代码真正存放的地址) = { :git => "代码仓库的地址", :tag => "#{s.version}" },前面写代码仓库的地址:https://github.com/JoanKing/JKGCDTimer,后面写 版本号的tag,tag是放到 releases 里面的,一定要有
release存放的tag
 - 
s.source_files(
指定在pod install下载的内容) ="JKGCDTimer", "JKGCDTimer/**/*.{h,m}",JKGCDTimer是下载的文件夹,**匹配的是目录,*.{h,m}是匹配的所有文件,*是通配符,重要提醒:"JKGCDTimer/*/.{h,m}" 中的JKGCDTimer要与spec在一个目录下,我这里写的是如下:s.source_files = "JKGCDTimer", "JKGCDTimer/JKGCDTimer/JKGCDTimer/**/*.{h,m}"
 s.source_files的解释
说明:在pod install 导入项目的框架 仅仅是导入的 上图3文件夹,由此可知s.source_files配置很重要 
 - 
 - 
4.5、提示:上面的内容咱们都写完了,还差最重要的 一 步,项目github仓库release里面还没有tag(tag就是对版本的别称),打tag如下:
// cd 进入 = JKGCDTimer 文件夹 cd JKGCDTimer // 查看本地仓库有没有 tag git tag // 没有的话 设置tag,如果有的话就为当前master的打tag git tag '0.0.1' // 删除之前的 origin 项目关联 git remote rm origin git remote add origin https://github.com/JoanKing/JKGCDTimer.git // 提交指定 tag git push origin 0.0.1 // 提交所有的标签 git push --tags
设置tag,并提交tag
gitHub中JKRichText仓库releases里面就会多一个0.0.1的tag
提示:在pod install 的时候导入的是 release 对应 tag里面的 JKGCDTimer 文件夹 
五、上传 spec 到gitHub的远程索引库
- 
5.1、在 guides.cocoapods里面有一个 Getting setup with Trunk,
注册 trunk,它的作用是能够让我们把本地的 spec 文件上传到 gitHub的远程索引库
Getting setup with Trunk
// pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air' // orta@cocoapods.org: 写邮箱 ,下面是我写的 pod trunk register 2318151015@qq.com 'IronMan' --description='咨询' 
注册trunk
- 
5.2、做完上面的,你的邮箱会收到一封邮件!,打开邮件上的链接
打开邮件上的链接
在终端执行你的库名的:spec 文件名
在终端执行你的库名的:spec 文件名
我要执行的是:pod trunk push JKGCDTimer.podspec - 
5.3、在
二中的 spec 内容要填好。可以执行下面的命令来检查是否符合要求 ,不能有任何警告或错误,出现的常见错误pod spec lint JKRichText.podspec- 
5.3.1、spec 验证通过
spec验证通过
 - 
5.3.2、如果你出现了error,那就逐个处理,下面仅仅展示一个错误的处理
错误
解决方案就是去xcode设置里面,将Command line Tools设置一下,在Xcode>preferences>Locations里面,设置之后再运行终端即可
解决方案g
 
 - 
 - 
5.4、若发布成功,会更新 master repo,会出现有类似如下信息:
发布成功提示
 - 
5.5、验证在CocoaPods上是否发布成功(也就是能够搜到),如果出现红色报错
搜不到的情况
- 
解决办法:重新 创建本地cocoapods搜索库 来解决:,先删除本地Cocoapods里面的
search_index.json文件control + shift + G 输入 ~/Library/Caches/CocoaPods/search_index.json 
删除本地Cocoapods里面的`search_index.json`文件
- 再次搜索时,会自动重新创建本地的索引库,也就是刚才删除的
search_index.json。时间会很慢,下载需要时间的,如果在搜一个框架找不到的时候,更新pod库:pod setup - 再次搜索 
pod search 框架名,若能查找到,表示发布成功
发布成功
 
 - 
 - 
5.6、如果你想在别人的电脑上也能search到你的项目,让别人电脑上更新 master repos,强制更新。
pod setup提示:如果别人的cocoapods是最新的,你可以copy他的 master,
control+shift + G输入~/.cocoapods/repos/master,拷贝 master就好了 - 
5.7、也可以在Cocoapods官网查看你的框架的状态,输入框架的名字即可,一般官网存在延迟,发布后不能立即搜出来,可能要等到第二天。
在Cocoapods官网查看你的框架的状态
 
六、查看自己在CocoaPods的注册信息
pod trunk me
查看自己在CocoaPods的注册信息
七、使用自己的框架(cocoapods),下面我们新建一个项目(JKTest),来使用
- 
7.1、创建项目 JKTest
创建项目 JKTest
 - 
7.2、创建 Podfile 文件
cd 进入 JKTest # 创建 Podfile 文件 pod init # 在Podfile文件里面输入要导入的框架 pod 'JKGCDTimer', '~> 0.0.1'
Podfile的创建于导入框架
# 导入框架 pod install 
成功导入 JKGCDTimer