iOS,制作屬于自己cocoapods,(framework,bundle)

緣由:
還是那個(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>

創(chuàng)建倉(cāng)庫(kù).png

2.clone代碼到本地


復(fù)制地址.png
克隆.png

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ù).如AFNetWorking

  • s.vendored_frameworks:包含的framework,也就是我們自己制作的pod

  • s.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)證成功.png

驗(yàn)證失敗的一些情況:
1.下面這種情況,只要在終端運(yùn)行命令:echo "2.3" > .swift-version

echo "2.3" > .swift-version.png

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 cocoapodspod setup

  • 注冊(cè)的三種方式:

這個(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)證是否正確.png

    2.發(fā)布成功


    發(fā)布成功.png

    3.檢查自己發(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)的比較好的鏈接:

結(jié)束語(yǔ):

如果發(fā)現(xiàn)問(wèn)題,或者有不懂的地方,請(qǐng)留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炫彩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子絮短,更是在濱河造成了極大的恐慌江兢,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丁频,死亡現(xiàn)場(chǎng)離奇詭異杉允,居然都是意外死亡邑贴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門叔磷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拢驾,“玉大人,你說(shuō)我怎么就攤上這事改基》卑蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵秕狰,是天一觀的道長(zhǎng)嵌洼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)封恰,這世上最難降的妖魔是什么麻养? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮诺舔,結(jié)果婚禮上鳖昌,老公的妹妹穿的比我還像新娘。我一直安慰自己低飒,他們只是感情好许昨,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著褥赊,像睡著了一般糕档。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拌喉,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天速那,我揣著相機(jī)與錄音,去河邊找鬼尿背。 笑死端仰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的田藐。 我是一名探鬼主播荔烧,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼汽久!你這毒婦竟也來(lái)了鹤竭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤景醇,失蹤者是張志新(化名)和其女友劉穎臀稚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體啡直,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烁涌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年苍碟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酒觅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撮执。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖舷丹,靈堂內(nèi)的尸體忽然破棺而出抒钱,到底是詐尸還是另有隱情,我是刑警寧澤颜凯,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布谋币,位于F島的核電站,受9級(jí)特大地震影響症概,放射性物質(zhì)發(fā)生泄漏蕾额。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一彼城、第九天 我趴在偏房一處隱蔽的房頂上張望诅蝶。 院中可真熱鬧,春花似錦募壕、人聲如沸调炬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缰泡。三九已至,卻和暖如春代嗤,著一層夾襖步出監(jiān)牢的瞬間棘钞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工干毅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留武翎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓溶锭,卻偏偏與公主長(zhǎng)得像宝恶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趴捅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容