一般我们在写程序,都是用cocoapods来管理框架,但是如何把自己写工具类发布成框架呢,经过多方查找资源,终于实现了以下功能,步骤如下:
1.注册
bogon:~ Allison$ pod trunk register allisonwangjj@163.com "Allisonwangjj"
执行完注册命令后,打开对应的邮箱,可以看到我们已经收到一封邮件,如下图
打开邮件中的URL连接地址,看到下图的界面,代表我们注册的功能就完成了.
2.查询pod注册信息
bogon:~ Allison$ pod trunk me
- Name: Allisonwangjj
- Email: allisonwangjj@163.com
- Since: April 26th, 01:10
- Pods: None
- Sessions:
- April 26th, 01:10 - September 1st, 01:21. IP: 113.204.101.114
bogon:~ Allison$
因为我是第一次发布框架,所以这里什么信息都没有.此时我们进入GithHub.去创建一个框架.如图所示
现在用终端搜索一下是否别人用过这个名字"FFAdditions"
bogon:~ Allison$ pod search FFAdditions
出现[!] Unable to find a pod with name, author, summary, or description matching FFAdditions
错误提示,意思是没有办法找到这个名字,说明这个框架名字还没有人用,所以我们赶快注册一个,点击注册,出现下图界面,表示注册成功,复制这个URL地址.
我们用SourceTree建立一个新仓库,如图5
此时,我们打开Xcode,在git目录下,创建一个新项目,随便拖入我们常用的一个工具类,并将工具类push到git上.
在GitHub上刷新,可以看到新上传的框架.
3.生成spec文件(这个生成非常重要,一定要在GitHub上主目录下的URL地址)
首先cd到项目目录,然后执行pod spec create命令创建
cd /Users/wuxianlvzhou/FFAdditions/AdditionsFrame
bogon:AdditionsFrame Allison$ pod spec create https://github.com/AllisonWangJiaoJiao/FFAdditions
当终端出现
Specification created at FFAdditions.podspec
时,代表框架创建成功.(或者找到对应的文件目录,发现多一个FFAdditions.podspec的文件也代表成功,如图8所示)
4.编辑spec文件,用xcode打开,会发现有很多内容,删除不需要的,保留一下内容即可.
Pod::Spec.new do |s|
s.name = "FFAdditions"
s.version = "0.0.1"
s.summary = ""
s.homepage = "https://github.com/AllisonWangJiaoJiao/FFAdditions"
s.license = "MIT"
s.author = { "AllisonWangJiaoJiao" => "email@address.com" }
s.platform = :ios, "8.0"
s.source = { :git => "https://github.com/AllisonWangJiaoJiao/FFAdditions.git", :tag => s.version }
s.source_files = "FFAdditions", "AdditionsFrame/AdditionsFrame/FrameTools/*.{h,m}"
s.requires_arc = true
end
.podspec文件各个参数的含义:
Pod::Spec.new do |s|
s.name = "你的项目名"
s.version = "项目的版本"
s.summary = "项目的描述"
s.homepage = "项目的主页,一般为github地址就行"
s.license = "许可证:一般为 MIT"
s.author = { "作者名" => "你的邮箱" }
// 支持的最低版本,比如ios 8.0
s.platform = :ios, "8.0"
// 源代码地址,也就是你github上的地址
s.source = { :git => "你的github地址", :tag => "项目的tag" }
// 源代码的文件路径
s.source_files = "WCL", "WCL/**/*.{h,m}" , "WCL/*.{swift}"
// ARC打开
s.requires_arc = true
关键:在sourcetree中建立标签.单独把标签推送到远程服务器,这样别人在使用我们框架的时候,他会在我们GitHub地址,下载标签对应的当前的所有文件.
提示:需要特别注意这两句的一个变化
原来:
s.source = { :git => "https://github.com/AllisonWangJiaoJiao/FFAdditions.git", :tag => s.version }
s.source_files = "Classes", "Classes/**/*.{h,m}"
编辑后:
s.source = { :git => "https://github.com/AllisonWangJiaoJiao/FFAdditions.git", :tag => s.version }
s.source_files = "FFAdditions", "AdditionsFrame/AdditionsFrame/FrameTools/*.{h,m}"
s.requires_arc = true
关闭FFAdditions.podspec文件,回到终端,编译验证各个版本.
bogon:AdditionsFrame Allison$ pod spec lint
执行完命令后,出现下面的错误
[!] The spec did not pass validation, due to 2 errors. [!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a .swift-version file to set the version for your Pod. For example to use Swift 2.3, run: echo "2.3" > .swift-version.
查看错误信息,发现是提示summary没有写,重新用Xcode打开,添加summary信息如下: s.summary = "这是我的框架"
再次在终端执行pod spec lint,来验证一下,这里需要耐心等待几分钟,出现"FFAdditions.podspec passed validation."代表验证通过.(激动😂.....)
5.推送(验证通过后才能推送)
bogon:AdditionsFrame Allison$ pod trunk push
这个命令执行需要几分钟,整个过程中,不能有警告⚠️,验证也是不通过的(必须保证当前版本必须没有警告),可以通过修改预编译指令来消除警告.
执行完pod trunk push这个命令后,出现如下命令
bogon:AdditionsFrame Allison$ pod trunk push
[!] Found podspec `FFAdditions.podspec`
Updating spec repo `master`
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your diff.renameLimit variable to at least 4785 and retry the command.
CocoaPods 1.2.1 is available.
To update use: `sudo gem install cocoapods`
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.1
Validating podspec
-> FFAdditions (0.0.1)
Updating spec repo `master`
CocoaPods 1.2.1 is available.
To update use: `sudo gem install cocoapods`
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.1
--------------------------------------------------------------------------------
🎉 Congrats
🚀 FFAdditions (0.0.1) successfully published
📅 April 26th, 02:31
🌎 https://cocoapods.org/pods/FFAdditions
👍 Tell your friends!
--------------------------------------------------------------------------------
如果升级的话,使用这个sudo gem install cocoapods命令即可.
这时,我们再创建一个新的Xcode的项目UseAdditionsFrame,执行以下命令步骤
bogon:AdditionsFrame Allison$ cd /Users/wuxianlvzhou/FFAdditions/UseAdditionsFrame
bogon:UseAdditionsFrame Allison$ pod install
此时看到目录下会多一个Podfile的文件,双击打开文件,加上 pod 'FFAdditions',在终端执行
bogon:UseAdditionsFrame Allison$ pod install
此时可以看见一个.xcworkspace的工程.
打开工程如下所示.
至此整个流程完毕,在这里做一下记录,方便自己日后学习.
常见的错误现象可以见我的另一篇博文[CocoaPods发布框架补充(升级)]//www.greatytc.com/p/347f125bbca7