swift項(xiàng)目-讓自己的項(xiàng)目支持cocoapod和carthage

前言:最近自己寫了一個(gè)圖片選擇器的庫(kù),想借著這個(gè)機(jī)會(huì)學(xué)習(xí)一下怎么讓自己的庫(kù)支持cocoapod和carthage酣难,由于我封裝的這個(gè)庫(kù)內(nèi)容非常多谍夭,所以在開發(fā)過程中遇到了很多的小問題都比較特殊黑滴,google半天有時(shí)也解決不了,通過慢慢摸索還是成功了紧索,在這里記錄一下我在開發(fā)中遇到的各種問題點(diǎn)袁辈。

假如我們已經(jīng)創(chuàng)建了一個(gè)庫(kù),庫(kù)的名稱是CLImagePickerTool齐板,并且已經(jīng)上傳到github吵瞻,下面我們就來一步一步讓它支持cocoapod.

(對(duì)于需要暴露出來的類和方法,一定要用public修飾甘磨,因?yàn)槲业谝淮胃愕脮r(shí)候就沒有注意到這一點(diǎn),還有一點(diǎn)C型!济舆!我的工程名稱叫CLImagePickerTool,我的庫(kù)的名稱也叫CLImagePickerTool莺债,這樣不好滋觉!在下面我集成carthage的時(shí)候就遇到了問題,建議項(xiàng)目名稱和庫(kù)的名稱不要一致齐邦,因?yàn)閯e人引用的是你的庫(kù)而不是整個(gè)項(xiàng)目椎侠,只要保證庫(kù)名稱是你想要的就好了。下面先貼出來我的項(xiàng)目目錄措拇,后面也可以參考)

屏幕快照 2017-08-31 下午8.56.01.png

一我纪、支持cocoapod

1.cd到當(dāng)前目錄

 cd  CLImagePickerTool

2.在當(dāng)前文件夾下創(chuàng)建一個(gè)podspec文件

 pod spec create CLImagePickerTool

3.編輯 podspec文件,這里是用vim打開的

    vim CLImagePickerTool.podspec

4.由于podspec文件自動(dòng)生成了很多內(nèi)容丐吓,我們可以不用管他浅悉,全選刪除,將下面的代碼復(fù)制到該文件中券犁,下面對(duì)這塊代碼進(jìn)行講解术健,根據(jù)你自己的庫(kù)名稱和目錄對(duì)照著改一下就好了。

      Pod::Spec.new do |s|
      s.name = 'CLImagePickerTool'
      s.version = '2.0.5'
      s.license = 'MIT'
      s.summary = 'This is a picture selector'
      s.homepage = 'https://github.com/Darren-chenchen/CLImagePickerTool'
      s.authors = { 'Darren-chenchen' => '1597887620@qq.com' }
      s.source = { :git => 'https://github.com/Darren-chenchen/CLImagePickerTool.git', :tag => s.version.to_s }

      s.ios.deployment_target = '8.0'

      s.source_files = 'CLImagePickerTool/CLImagePickerTool/**/*.swift'
      s.resource_bundles = { 
'CLImagePickerTool' => ['CLImagePickerTool/CLImagePickerTool/images/**/*.png','CLImagePickerTool/CLImagePickerTool/**/*.{xib,storyboard}','CLImagePickerTool/CLImagePickerTool/**/*.{lproj,strings}']
      }
    end

下面我們來解釋一下各個(gè)選項(xiàng)的意義粘衬。
s.name = 'CLImagePickerTool' 你的庫(kù)的名稱
s.version = '2.0.5' 版本號(hào)
s.license = 'MIT' listen文件的類型
s.summary 簡(jiǎn)單的描述
s.homepage = 'https://github.com/Darren-chenchen/CLImagePickerTool' 庫(kù)的github地址

詳細(xì)說下下面的含義吧荞估,比如我的庫(kù)的全部demo都在CLImagePickerTool項(xiàng)目下的CLImagePickerTool文件夾下,并且都是swift寫的就可以表示成如下的形式
s.source_files = 'CLImagePickerTool/CLImagePickerTool/*/.swift'

對(duì)于項(xiàng)目中用到的資源文件稚新,比如我的圖片路徑就是CLImagePickerTool/CLImagePickerTool/images勘伺,如果用到了xib或者storyboard,或者用到了本地化相關(guān)的文件枷莉,總之只要是相關(guān)的資源文件都要表現(xiàn)出來
s.resource_bundles = {
'CLImagePickerTool' => ['CLImagePickerTool/CLImagePickerTool/images//.png','CLImagePickerTool/CLImagePickerTool//.{xib,storyboard}','CLImagePickerTool/CLImagePickerTool/*/.{lproj,strings}']
}

5.提交代碼到github娇昙,并打標(biāo)簽

    git commit -a -m “......”
    git push 
    git tag 1.0.0   // 這個(gè)版本要和podspec中的version一致
    git push origin --tags   // 提交到遠(yuǎn)端

6.檢查podspec 文件是否有錯(cuò)誤

    pod spec lint CLImagePickerTool.podspec

如果出現(xiàn)CLImagePickerTool.podspec passed validation. 就表示沒有錯(cuò)誤。

7.如果之前沒有注冊(cè)過CocoaPods賬號(hào)笤妙。
打開終端冒掌,在終端中輸入如下命令:

    pod trunk register 郵箱地址 '用戶名' --description='描述信息'

然后根據(jù)終端顯示信息噪裕,如果成功的話會(huì)提示讓你去郵箱里確認(rèn)進(jìn)行激活。

輸入如下命令可查看個(gè)人CocoaPods賬號(hào)信息

    pod trunk me

8.如果注冊(cè)過股毫,就你直接執(zhí)行下面的代碼,直接推到cocoapods服務(wù)器

    pod trunk push  CLImagePickerTool.podspec

(如果你完成了第6部膳音,下面的操作跟著終端的提示一步一步也能完成后續(xù)操作,主要是遇到問題不要太著急铃诬,細(xì)心看<老荨)

9.如果你能完成上面操作,在執(zhí)行完 pod trunk push CLImagePickerTool.podspec后如果出現(xiàn)下面的情況就說明你的庫(kù)已經(jīng)支持cocoapod了趣席。

屏幕快照 2017-08-31 下午9.00.00.png

10.成功上傳后要先執(zhí)行 pod setup更新下pod才能搜索到自己的庫(kù)兵志。

二、支持carthage

  1. 新建targets
屏幕快照 2017-08-31 下午9.03.36.png
屏幕快照 2017-08-31 下午9.03.51.png

2.添加需要編譯的文件和資源宣肚,這個(gè)地方要特別注意想罕,Compile Sources 文件中不能添加xib文件和圖片資源,只能添加后綴名為swift的文件

![Uploading 屏幕快照 2017-08-31 下午9.08.55_981672.png . . .]
屏幕快照 2017-08-31 下午9.08.55.png
  1. 這里也有一個(gè)注意點(diǎn)霉涨,大家可以從圖片中看到按价,我新建的target名稱是CLImagePickerTool-framework,如果我想打包出來的文件名不要這個(gè)名稱笙瑟,我想要換個(gè)名稱楼镐,我本來是想用CLImagePickerTool這個(gè)名稱,那么打包出來的framework就是CLImagePickerTool.framework,但是這個(gè)名稱和項(xiàng)目名稱重復(fù)了往枷,這樣肯定不行框产,但是我現(xiàn)在又不能去改項(xiàng)目名稱,大家都知道改項(xiàng)目名稱又會(huì)遇到很多問題师溅,所以我這里就很無奈的給framework起了另外一個(gè)名字--ImagePickerTool.framework茅信。說了這么多,在哪設(shè)置名稱呢墓臭,看圖片吧蘸鲸!
屏幕快照 2017-08-31 下午9.21.38.png

4.再補(bǔ)充一個(gè)注意點(diǎn)!我的庫(kù)最低支持ios8窿锉,當(dāng)你新建target后要檢查是不是也是最低支持ios8

屏幕快照 2017-08-31 下午9.31.52.png

5.分享target,勾選我們的framework 酌摇,點(diǎn)擊close

屏幕快照 2017-08-31 下午9.11.12.png
屏幕快照 2017-08-31 下午9.23.21.png

6.下面開始測(cè)試我們的framework庫(kù)是不是可以用,先生成一個(gè)framework
進(jìn)入我們當(dāng)前文件夾CLImagePickerTool嗡载,執(zhí)行下面代碼窑多,會(huì)生成一個(gè)carthage文件夾

      carthage build --no-skip-current
屏幕快照 2017-08-31 下午9.28.54.png

7.新建一個(gè)項(xiàng)目,測(cè)試framework是否可以使用洼滚,將上面生成的ImagePickerTool.framework,拖到項(xiàng)目中埂息,


屏幕快照 2017-08-31 下午9.35.48.png

運(yùn)行項(xiàng)目,如果沒有報(bào)錯(cuò)就開始測(cè)試是不是已經(jīng)引入了framework庫(kù),

屏幕快照 2017-08-31 下午9.38.46.png

8.如果可以用也沒有報(bào)錯(cuò)千康,就說明這個(gè)framework就可以使用的享幽,下面就可以通過Carghage來導(dǎo)入framework了。在這之前先把我們的demo上傳到github拾弃,并且打一個(gè)新標(biāo)簽

    git commit -a -m “......”
    git push 
    git tag 1.0.1   // 這個(gè)版本要和podspec中的version一致
    git push origin --tags   // 提交到遠(yuǎn)端

9.測(cè)試carthage 值桩。建議再建一個(gè)項(xiàng)目,在項(xiàng)目根目錄新建一個(gè)Cartfile文件豪椿,在里面寫入

    github "Darren-chenchen/CLImagePickerTool"

執(zhí)行

    carthage update

執(zhí)行完成應(yīng)該是下面的狀態(tài)

屏幕快照 2017-08-31 下午9.46.42.png

10.還需要手動(dòng)添加一下framework庫(kù)奔坟。

屏幕快照 2017-08-31 下午9.48.07.png
屏幕快照 2017-09-01 上午10.27.37.png

再來說下我在這一步遇到的問題吧!因?yàn)槲业膸?kù)也支持cocoapod搭盾,在cocoapod中如果要加載xib或者圖片咳秉,肯定是要先找到后綴名為.bundle的文件,然而carthage卻是要找后綴名為.framework的文件鸯隅,因?yàn)橹耙恢睕]有處理這個(gè)問題滴某,導(dǎo)致項(xiàng)目總是在xib的位置奔潰,下面就貼出來我針對(duì)carthage的處理

屏幕快照 2017-09-01 上午10.30.41.png

感謝您的閱讀滋迈,歡迎訪問我的github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末户誓,一起剝皮案震驚了整個(gè)濱河市饼灿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帝美,老刑警劉巖碍彭,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異悼潭,居然都是意外死亡庇忌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門舰褪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皆疹,“玉大人,你說我怎么就攤上這事占拍÷跃停” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵晃酒,是天一觀的道長(zhǎng)表牢。 經(jīng)常有香客問我,道長(zhǎng)贝次,這世上最難降的妖魔是什么崔兴? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上敲茄,老公的妹妹穿的比我還像新娘位谋。我一直安慰自己,他們只是感情好折汞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布倔幼。 她就那樣靜靜地躺著,像睡著了一般爽待。 火紅的嫁衣襯著肌膚如雪损同。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天鸟款,我揣著相機(jī)與錄音膏燃,去河邊找鬼。 笑死何什,一個(gè)胖子當(dāng)著我的面吹牛组哩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播处渣,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼伶贰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了罐栈?” 一聲冷哼從身側(cè)響起黍衙,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荠诬,沒想到半個(gè)月后琅翻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柑贞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年方椎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钧嘶。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棠众,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出康辑,到底是詐尸還是另有隱情摄欲,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布疮薇,位于F島的核電站胸墙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏按咒。R本人自食惡果不足惜迟隅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一但骨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧智袭,春花似錦奔缠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞳步,卻和暖如春闷哆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背单起。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工抱怔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘀倒。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓屈留,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親测蘑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灌危,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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