发布自己的pod开源框架到CocoaPods
前言:
我们要实现一个自己的pod第三方库,需要以下几个步骤:
1.源码框架(源码以提交到GitHub为例
2.需要描述文件.podspec
3.提交描述文件到远程索引库
4.更新本地索引
先来看看这张图,方便大家理解这个过程!
我们可以把cocoapods看作一个远程索引库,远程索引库里面有非常多的.podspec文件!而.podspec文件里记录的是框架的名称版本号真实的源码地址等!
有时候,我们在使用pod search '库名' 搜索已经有了的第三方时,会出现如下错误。这是因为自己的本地索引库是旧的(也就是别人上传这个库之前,您已经pod setup 安装里本地索引库,而再没有更新过!
pod search ‘name’ 是在本地的索引库里根据这个key(也就是name)来找到这个索引文件,本地没有,则找不到。
我们在使用pod install安装第三方库时,就是根据这个索引文件里的源码链接安装的。
pod install 和pod update 有什么区别呢?pod update 也可以安装第三方,它参照的Podfile 文件,如果咱们
没指定Podfile 里第三方版本号,pod update 就会更新到最新。(PS合作开发会冲突
pod install安装第三方参照Podfile.lock 里是有版本记录的。
Pod setup 会从远程索引库 克隆到本地, pod search 从本地索引库查找
192:~ teemo$ pod search 'TMManager'
[!] Unable to find a pod with name, author, summary, or description matching `TMManager`
//找不到这个,如果确定有的话,就是自己本地检索库没更新
执行pod steup就可以了(如果实在不行,则删除下面路径下的。search_index.json文件(15M左右)
192:~ teemo$ cd /Users/teemo/Library/Caches/CocoaPods
192:CocoaPods teemo$ open .
删除后,再执行pod steup即可
1.准备工作:源码框架(源码以提交到GitHub为例
1.在GitHub新建个仓库,复制新建的仓库的URL,下面备用
最下面够选了,会生成两个文件(如果没勾选,需要自己后面创建
2.本地项目新建文件夹名称为TMManager
在终端cd 到TMManager 目录下 按顺序执行,客隆项目下来后,然后把自己的开源库放进去
git clone URL //git clone https://github.com/TeeMoYan/TMManager.git//从远端客隆项目下来
git add . //提交到暂缓区
git commit -m '第一次提交' //本地提交
git push //提交到远程仓库
此时在github上已经可以看到项目上传到远端仓库了。刷新github 可以看见
2.需要描述文件.podspec
还是在项目TMManager 下,执行如下命令,新建一个TMManager.podspec 文件
pod spec create TMManager //此时,在TMManager下有了TMManager.podspec文件
用Xcode打开这个文件,修改.podspec 文件以下几个地方(复制删除序号和中文也可
1. s.summary = "TMManager" 改成你的仓库名就行了
2. s.description = "TMManager的详细描述,要注意比s.summary的描述要长"
// s.description = <<-DESC
TMManager的详细描述,要注意比s.summary的描述要长//要么这样写(不能合到一行),要么和上面的一样
DESC
3. s.homepage = "https://github.com/TeeMoYan/TMManager.git" 改成你github的仓库地址就行了
4. # s.license = "MIT" 这里要注销掉
5. s.license = { :type => "MIT", :file => "LICENSE" }
6. s.author = { "name" => “邮箱” }改成你的名字和邮箱
7. s.source = { :git => "https://github.com/TeeMoYan/TMManager.git", :tag => "#{s.version}” }
8. # s.exclude_files = "Classes/Exclude” 注释掉
9. s.source_files = "Demo", "Demo/**/*.{h,m}" //和.podspec 写同级文件夹名字
10. s.license = { :type => "MIT", :file => "LICENSE" }//和 podspec 同目录下要有LICENSE文件,没有自己创建个同名文件也可以(没写内容也可以成功
11. s.platform = :ios s.platform = :ios, "8.0"//指定最小支持系统
12. s.requires_arc = true //是否使用ARC
13. s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit' //使用框架
//此时修改完毕,关闭保存
使用pod lib lint TMManager.podspec 来验证,写的对不对
//TMManager passed validation. 出现绿色这行话,则没有问题,有问题则继续修改
接下还 在TMManager 目录下给项目打个标签(tag 刚才没有更改.podspec 里面的version 他们要保持一致
cd /Users/teemo/Desktop/TMManager
git tag '0.0.1' //打个标签为 0.0.1
192:TMManager teemo$ git tag。//查看标签
git push --tags //推送tag到远端仓库,此时刷新github 可以看见
3.提交描述文件到远程索引库
接下还 在TMManager 目录下,
pod trunk register TeeMoYan@163.com 'TeeMo' --verbose//执行后出现这个,则去你的邮箱验证你收到的邮件。如果没有,去垃圾箱看一下。
[!] Please verify the session by clicking the link in the verification email that has been sent to TeeMoYan@163.com
验证成功:
验证成功后,在TMManager目录下执行
pod trunk push TMManager.podspec
出现下图,上传成功!
4.更新本地索引
接下来,我们来搜一下!(别忘了我们之前说的,先删除/Users/teemo/Library/Caches/CocoaPods 路径下的search_index.json文件(15M左右),执行pod setup 后再 pod search ‘TMManager’
是不是搜到了呢!