開發(fā)框架的人需要做的事情:
0. 創(chuàng)建庫工程, 添加源文件到Classes文件夾
1. 上傳項(xiàng)目到github, 并且打好標(biāo)簽;
- git push origin master
- git tag '1.0.0'
- git push --tags
2. 配置并上傳框架的 PodSpec 文件, 并使用trunk的方式上傳
- PodSpec理論
* PodSpec 文件 描述自己的框架信息
* pod install 就是根據(jù)這個(gè)文件里面的 源文件路徑進(jìn)行安裝的
* 注意: 一般這個(gè)文件的名稱和工程名稱保持一致
* 創(chuàng)建命令:`pod spec create 文件名稱`
- PodSpec文件內(nèi)容格式
* 可以到官網(wǎng)查看,也可參考github上別人家的PodSpec文件
- 上傳之前本地和遠(yuǎn)程驗(yàn)證
```
本地驗(yàn)證
pod lib lint 項(xiàng)目.podspec --allow-warnings
遠(yuǎn)程驗(yàn)證
pod spec lint 項(xiàng)目.podspec --allow-warnings
```
- 注冊trunk,通過trunk推送podspec文件,
pod trunk push
(或pod trunk push 項(xiàng)目.podspec
),上傳這個(gè)描述文件到cocoapods在github上的倉庫中(https://github.com/CocoaPods/Specs)
podspec文件在終端中提交成功
》》如何注冊trunk:
1、終端輸入:pod trunk register 906197xxx@qq.com 'luofeng' --verbose
2、終端提示:打開上述郵箱,點(diǎn)擊鏈接,成功后回到終端;
3、提交podspec文件:pod trunk push LFCategory.podspec
打開鏈接后成功
》》pod trunk push xxxx.podspec失敗的幾種可能:
1、podspec文件的version和pod打的tag沒對應(yīng)上;
2、podspec的文件名已經(jīng)別人已經(jīng)用了,這個(gè)需要修改;(終端中會(huì)提示該pod文件是別人的);
podspec文件名被占用
3、trunk還沒注冊;
提示trunk還沒注冊
- 等待審核。
注意:pod trunk push 上傳spec到CocoaPods/Specs中,也可按照正常的操作, 先fork , 然后提交 pull request
3. 更新本地pod 第三方框架信息數(shù)據(jù)源(可省略)
方式一:pod setup
方式二:可以省略這一步驟, 因?yàn)樯鲜鎏峤? 直接更新了本地索引庫
4. 測試
使用pod search 命令搜索自己的框架, 如果可以搜索到, 那么代表審核通過了;如果沒搜到/Users/fengluo/Library/Caches/CocoaPods
這個(gè)文件夾下把search_index.json刪了,重新search會(huì)再生成一個(gè)search_index.json。
備注:遠(yuǎn)程庫的spec文件需要修改或要注意的字段:
Pod::Spec.new do |s|
#項(xiàng)目名稱
s.name = "lovellClasses"
#版本
s.version = "0.0.3"
#簡介
s.summary = "description."
#詳細(xì)描述
s.description = "這個(gè)是詳細(xì)描述,一定要注意,字?jǐn)?shù),要比summary多,否則會(huì)報(bào)錯(cuò)."
#框架首頁
s.homepage = "https://github.com/mylovell/testPerson"
#許可證
s.license = "MIT"
#作者
s.author = { "yyyy" => "xxxx@qq.com" }
#設(shè)備
s.platform = :ios, "8.0"
#源碼地址,還有這里的tag要和上面的s.versio保持一致
s.source = { :git => "https://github.com/xxxx/testPerson.git", :tag => "#{s.version}" }
#源碼中指定哪些文件需要下載
s.source_files = "Classes", "Classes/**/*.{h,m}"
#s.exclude_files當(dāng)前用不了,可以不要
# s.exclude_files = "Classes/Exclude"
end
開發(fā)框架的人需要做的事情20170705_4.png