緣由:
還是那個(gè)小活,需求方想用cocoapods來(lái)集成framework,由于之前,我從沒(méi)有自己做過(guò)屬于自己的cocoapods,所以也是一臉懵逼,各種查資料.
制作cocoapods步驟:
- 代碼提交到github平臺(tái)
- 創(chuàng)建.podspec
- 編輯.podspec
- 項(xiàng)目打tag
- 驗(yàn)證.podspec
- 注冊(cè) cocoapods trunk帳號(hào)
- 發(fā)布.podspec到cocoapods
1.代碼提交到github平臺(tái)
1.在github上創(chuàng)建一個(gè)新的倉(cāng)庫(kù)<圖中的1、2一定要選擇,2可以是其他的License
>
2.clone代碼到本地
3.相加自己的項(xiàng)目莫秆,然后提交到github上
git add .
git commit -m "描述"
git push origin master
2.創(chuàng)建.podspec
在項(xiàng)目目錄下伙菊,執(zhí)行命令創(chuàng)建.podspec,一下3中方式都可以創(chuàng)建:
- $ pod spec create CFMobAdSDK.podspec
- $ touch CFMobAdSDK.podspec
- $ vim CFMobAdSDK.podspec
3.編輯.podspec
記桌旄拧:不要用文本編輯打開(kāi)編輯窘俺,不要用文本編輯打開(kāi)編輯遇八,不要用文本編輯打開(kāi)編輯是掰,
可以用atom編輯
可以用vim命
令編輯,vim
狀態(tài)下,按i
進(jìn)入編輯狀態(tài),按esc
退出編輯狀態(tài),然后輸入:wq
保存退出編輯
:Pod::Spec.new do |s|
s.name = "CFMobAdSDK"
s.version = "1.0.6"
s.ios.deployment_target = '7.0'
s.summary = "廣告sdk,一個(gè)簡(jiǎn)單的廣告SDK."
s.homepage = "https://github.com/lixianshen/CFMobAdSDK"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "Simple" => "810646506@qq.com" }
s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :tag => s.version }
#s.source_files = "CFMobAdSDK/*"
s.resources = "CFMobAdSDK/CFMobAdSDK.bundle"
s.frameworks = 'Foundation', 'UIKit', 'CoreLocation', 'AdSupport'
s.vendored_frameworks = 'CFMobAdSDK.framework'
s.requires_arc = true
end
下面介紹一下.podspec中部分代碼的含義:
s.name:名稱虑鼎,
pod search
搜索的關(guān)鍵詞,一定要和.podspec的名稱一樣,否則報(bào)錯(cuò)s.version
:版本號(hào)s.ios.deployment_target
:支持的pod
最低版本s.summary
: 簡(jiǎn)介s.homepage
:項(xiàng)目主頁(yè)地址s.license
:開(kāi)源協(xié)議(創(chuàng)建github
庫(kù)的時(shí)候選擇的)s.author
:作者信息(這里隨便謝謝也可以通過(guò))s.social_media_url
:社交網(wǎng)址s.source
:項(xiàng)目的地址s.source_files
:需要包含的源文件s.resource
:資源文件,單個(gè)s.resources
: 資源文件(含bundle
)s.requires_arc
: 是否支持ARC
s.dependency
:依賴庫(kù),不能依賴未發(fā)布的庫(kù).如AFNetWorkings.vendored_frameworks
:包含的framework
,也就是我們自己制作的pods.description
:描述,字?jǐn)?shù)要比s.summary
長(zhǎng)s.screenshots
:截圖s.exclude_files
:隱藏的文件s.public_header_files
:公開(kāi)的頭文件s.framework
:所需的framework
,單個(gè)s.frameworks
:所需的framework
,多個(gè)用逗號(hào)隔開(kāi)s.vendored_libraries:包含的的.a
注意事項(xiàng):多個(gè)s.dependency可以這樣寫(xiě),(可以加上版本號(hào)):
s.dependency = 'AFNetworking', '~> 2.3'
s.dependency = 'SDWebImage'
s.dependency = 'AFNetworking's.license可以用下面2中寫(xiě)法:
s.license = "MIT" 會(huì)有一個(gè)警告
s.license = { :type => "MIT", :file => "LICENSE" }s.source_files:寫(xiě)法及含義:
"CFMobAdSDK/*
"CFMobAdSDK/*.{h,m}"
"CFMobAdSDK/**/*.h"
“” 表示匹配所有文件
“.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件
“**” 表示匹配所有子目錄
-
s.source 常見(jiàn)寫(xiě)法
/// git commit -m =>"13287dd",講pod版本與git倉(cāng)庫(kù)中的某一次提交綁定 s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :commit => "13287dd" } /// 將這個(gè)Pod版本與Git倉(cāng)庫(kù)中某個(gè)版本的comit綁定 s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :tag => 1.0.0 } /// 將這個(gè)Pod版本與Git倉(cāng)庫(kù)中相同版本的comit綁定 s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :tag => s.version }
4.上傳編輯好的.podspec
5.tag標(biāo)記,并且上傳
```
/// 第一次需要在前面加一個(gè)v
git tag "v1.0.0"
git push --tags
```
6.驗(yàn)證.podspec
方式一
// 加上--verbose驗(yàn)證失敗會(huì)顯示詳細(xì)的報(bào)錯(cuò)信息
pod spec lint CFMobAdSDK.podspec --verbose
方式二
pod spec lint
驗(yàn)證開(kāi)始
-> CFMobAdSDK
成功:
驗(yàn)證失敗的一些情況:
1.下面這種情況,只要在終端運(yùn)行命令:echo "2.3" > .swift-version
2.- ERROR | [iOS] file patterns: The source_files
pattern did not match any file.
解決方法: 文件路徑不對(duì), 也就是設(shè)置 s.source_files 字段時(shí), 發(fā)生了錯(cuò)誤
3.- ERROR | [iOS] file patterns: The vendored_frameworks
pattern did not match any file.
解決方法: framework路徑不對(duì), 也就是設(shè)置 s.vendored_frameworks 字段時(shí), 發(fā)生了錯(cuò)誤
7.注冊(cè)cocoapods trunk
trunk需要
cocoaPods
的版本在0.33版本键痛,用pod --version
,如果版本低,先升級(jí)sudo gen install cocoapods
和pod setup
-
注冊(cè)的三種方式:
- pod trunk register eloy@example.com
Eloy Durán
--description=Personal Laptop
- pod trunk register eloy@example.com --description=
Work Laptop
- pod trunk register eloy@example.com
- pod trunk register eloy@example.com
這個(gè)時(shí)候,你填寫(xiě)的郵箱會(huì)收到一封郵件,把鏈接復(fù)制,在瀏覽器打開(kāi)就可以了,如果沒(méi)有打開(kāi)這個(gè)鏈接,下面的步驟是不能進(jìn)行的
- 查看注冊(cè)信息:
pod trunk me
- Name: lixianshen
- Email: 810646506@qq.com
- Since: May 1st, 01:51
- Pods:
- CFMobAdSDK
- Sessions:
- May 1st, 01:51 - September 7th, 08:30. IP: 125.121.226.128 Description:
Simple
- May 2nd, 18:35 - September 7th, 18:43. IP: 125.118.107.149
- May 2nd, 20:55 - September 7th, 21:05. IP: 125.118.107.149
- May 4th, 02:19 - September 9th, 02:20. IP: 125.118.107.149
8.發(fā)布自己的.podspec到cocoapods
pod trunk push CFMobAdSDK.podspec
-
如果有警告用:pod trunk push CFMobAdSDK.podspec --allow-warnings
1.先驗(yàn)證是否正確
驗(yàn)證是否正確.png2.發(fā)布成功
發(fā)布成功.png3.檢查自己發(fā)布的pod
檢查之前先刪除緩存中的json文本
~/Library/Caches/CocoaPods/search_index.json
5581BF55-1A5F-41BA-88C7-34F90B0FA421.png
如果不刪除,會(huì)搜索不到自己發(fā)布的,如果讓你朋友也要查到也要?jiǎng)h除現(xiàn)有的緩存4.搜索記錄
搜索記錄.png如果想刪除已發(fā)的版本,需要使用下面的命令:
pod trunk delete CFMobAdSDK 版本號(hào)
例如
pod trunk delete CFMobAdSDK 1.0.1
到這基本結(jié)束了:下面是幾個(gè)和本內(nèi)容相關(guān)的比較好的鏈接:
trunk 命令詳解:
trunk制作cocoapods的官方網(wǎng)站
Making CocoapodsFramework和.a的制作
Framework+a
結(jié)束語(yǔ):
如果發(fā)現(xiàn)問(wèn)題,或者有不懂的地方,請(qǐng)留言