制作自己的帶有Example工程的CocoaPods

一、創(chuàng)建github倉庫

步驟1 創(chuàng)建新倉庫

15547098780565.jpg

這里我們設(shè)置倉庫為公開的牙咏。

步驟2 新建一個(gè)文件夾,將我們剛才在github上創(chuàng)建的庫clone下來

git clone https://github.com/Shaw003/PrivatePodDemo.git

可以看到如下的目錄結(jié)構(gòu)


15546889925231.jpg

步驟3 創(chuàng)建Pod本地庫嘹裂。

#該命令會(huì)從github上CocoaPods的庫中下載一個(gè)pod模版
#這里筆者創(chuàng)建了一個(gè)名為PrivatePodDemo的Pod庫
pod lib create PrivatePodDemo
#之后終端會(huì)詢問你幾個(gè)問題妄壶,默認(rèn)左側(cè)選項(xiàng),選擇默認(rèn)可直接回車
#選擇運(yùn)行平臺(tái)寄狼,筆者這里選擇了iOS
What platform do you want to use?? [ iOS / macOS ]
 > 
ios
#選擇語言丁寄,筆者這里選擇了Swift
What language do you want to use?? [ Swift / ObjC ]
 > 
swift
#你希望創(chuàng)建一個(gè)帶有示例工程的庫么?筆者這里選擇是
Would you like to include a demo application with your library? [ Yes / No ]
 > 
yes
#使用測試框架么?筆者這里選擇否
Which testing frameworks will you use? [ Quick / None ]
 > none
#是否要進(jìn)行基于視圖的測試伊磺,其實(shí)具體含義我也不太清楚盛正,筆者這里選擇否
Would you like to do view based testing? [ Yes / No ]
 > no

之后終端會(huì)自動(dòng)打開你的Example工程,可以看到文件目錄結(jié)構(gòu)如下所示:


15546892403075.jpg

最外層的<PrivatePodDemo>就是步驟2從github上clone下來的文件夾屑埋,<PrivatePodDemo/PrivatePodDemo>是步驟3輸入的名稱

步驟4 編輯PrivatePodDemo.podspec文件

內(nèi)容如下所示:

Pod::Spec.new do |s|
  s.name             = 'PrivatePodDemo'
  s.version          = '0.1.0'
  s.summary          = 'A short description of PrivatePodDemo.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/Shaw003/PrivatePodDemo'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'Shaw' => 'shawtun1211@163.com' }
  s.source           = { :git => 'https://github.com/Shaw003/PrivatePodDemo.git', :tag => s.version.to_s }
  # s.social_media_url = 'http://www.reibang.com/u/596fa2382f62'
  # 如果需要設(shè)置語言版本的話可以這樣做
  s.swift_version = '4.2'
  s.ios.deployment_target = '8.0'

  s.source_files = 'PrivatePodDemo/Classes/**/*'
  
  # s.resource_bundles = {
  #   'PrivatePodDemo' => ['PrivatePodDemo/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  s.dependency 'Alamofire'
  s.dependency 'WCDB.swift', '1.0.7.5'
end

以上按照自己的情況修改即可豪筝,值得注意的是兩個(gè)地方,

關(guān)注點(diǎn)1: s.dependency

如果你開發(fā)的庫引用到了別的第三方庫雀彼,可以使用s.dependency字段來寫你引用了哪些三方庫壤蚜,值得注意的是,如果引用了多個(gè)徊哑,需要寫多個(gè)s.dependency,舉例:

  s.dependency 'Alamofire'
  s.dependency 'WCDB.swift'

關(guān)注點(diǎn)2: s.source_files

這里它默認(rèn)寫的路徑是PrivatePodDemo/Classes/**/*聪富,我們可以打開對應(yīng)的文件夾莺丑,發(fā)現(xiàn)默認(rèn)有一個(gè)Replace.swift的文件,這樣給人的理解是墩蔓,我們可以將希望通過Pod分享出去的源代碼放到<PrivatePodDemo/PrivatePodDemo/PrivatePodDemo/Classes>文件夾下梢莽,當(dāng)我們對這里的源代碼有任何修改的時(shí)候,都需要先設(shè)置工作路徑為包含Podfile文件的目錄奸披,然后執(zhí)行pod install命令昏名。

首先我們找到并刪除掉Classes文件夾中的Replace.swift,以我們自己的代碼對其進(jìn)行替換阵面,替換后的目錄結(jié)構(gòu)如下所示轻局,

15546902220665.jpg

這里我們嘗試刪除掉Replace.swift文件,并將你的工程代碼文件拖入到這里样刷,這時(shí)候我們可以執(zhí)行pod install

// 這里我們發(fā)現(xiàn)`Podfile`文件在`Example`文件夾中
cd PrivatePodDemo/PrivatePodDemo/Example
文件
pod install

執(zhí)行完畢后仑扑,我們可以看到,在Xcode中置鼻,目錄結(jié)構(gòu)已變成如下所示镇饮,


15546904522536.jpg

我們對工程進(jìn)行編譯一下,發(fā)現(xiàn)沒有報(bào)錯(cuò)箕母,編譯通過储藐。

步驟5 提交git

操作1 提交到本地倉庫
git add -A
git commit -m "commit code"

在嘗試提交git時(shí)時(shí)會(huì)報(bào)一個(gè)錯(cuò)誤,


15546906498061.jpg

原因是因?yàn)閯?chuàng)建pod lib時(shí)已經(jīng)包括了.git文件了,此時(shí)需要終端切換工作路徑到<PrivatePodDemo/PrivatePodDemo>

cd PrivatePodDemo/
ls -a
15546907455017.jpg
操作2 刪除.git文件

此時(shí)只需要?jiǎng)h除.git文件即可嘶是,執(zhí)行如下命令:

rm -rf .git

刪除后钙勃,我們再嘗試添加到本地倉庫,執(zhí)行命令

操作3 提交到遠(yuǎn)端
git commit -m "commit code"
git push

提交后我們發(fā)現(xiàn)只提交了一個(gè)PrivatePodDemo的空文件夾俊啼,里面什么都沒有肺缕,這時(shí)候我們可以刪除遠(yuǎn)端剛才的提交,重新提交一次

操作4 刪除遠(yuǎn)端提交
git rm -r --cached PrivatePodDemo
git commit -m "刪除錯(cuò)誤提交"
git push

刪除完成后我們重復(fù)操作1,再次提交就可以了同木。

步驟6 創(chuàng)建git tag

此處創(chuàng)建的tag需要和podspec文件中s.version字段保持一致浮梢,這里我們寫0.1.0

git tag 0.1.0
git push --tags

二、 上傳Pod

步驟1 驗(yàn)證pod

執(zhí)行如下命令進(jìn)行驗(yàn)證

pod spec lint

等了一會(huì)彤路,發(fā)現(xiàn)驗(yàn)證不通過秕硝,原因有一個(gè)錯(cuò)誤和幾個(gè)警告,我們看下錯(cuò)誤信息

- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

這時(shí)洲尊,我們可以對PrivatePodDemo.podspec文件進(jìn)行如下修改

s.source_files = 'PrivatePodDemo/PrivatePodDemo/Classes/**/*'

再次執(zhí)行驗(yàn)證远豺,我們可以忽略警告

pod spec lint --allow-warnings

這次驗(yàn)證結(jié)果

PrivatePodDemo.podspec passed validation.

驗(yàn)證通過了,這時(shí)你可能會(huì)問坞嘀,那剛才第一次在編輯s.source_files字段時(shí)為什么不直接寫成最后一次修改這樣呢躯护?具體原因我還不太清楚,不過經(jīng)過我測試發(fā)現(xiàn)丽涩,source_files兩種寫法棺滞,
寫法1:PrivatePodDemo/Classes/**/*
寫法2:PrivatePodDemo/PrivatePodDemo/Classes/**/*矢渊,

如果采用 寫法1 在執(zhí)行pod install命令時(shí)继准,可以正常獲取保存在Classes文件夾中的代碼;當(dāng)執(zhí)行pod spec lint命令時(shí)卻由于沒找打源碼文件而未能驗(yàn)證通過矮男。
如果采用 寫法2 則在執(zhí)行pod install命令時(shí)移必,無法正常獲取到保存在Classes文件夾中的代碼,而執(zhí)行pod spec lint命令時(shí)卻能驗(yàn)證通過毡鉴。
因此崔泵,筆者采用了先用 寫法1 提交到github的倉庫,再修改為 寫法2 去進(jìn)行驗(yàn)證的方式眨补。

步驟2 上傳Pod

由于之前我們創(chuàng)建的這個(gè)示例工程的名字不太好管削,和線上的有沖突了,我們這里修改.podspec文件名為PrivatePodDemo001.podspec撑螺,同時(shí)含思,調(diào)整文件內(nèi)的s.name = 'PrivatePodDemo001'
接下來執(zhí)行命令

pod trunk push PrivatePodDemo001.podspec --allow-warnings

等待一會(huì),出現(xiàn)如下內(nèi)容甘晤,說明上傳成功了


15547083693595.jpg

步驟3 搜索Pod

直接輸入如下指令

pod search PrivatePodDemo001

報(bào)錯(cuò)了含潘,提示如下:

[!] Unable to find a pod with name, author, summary, or description matching `PrivatePodDemo001`

這時(shí)我們可以嘗試重新設(shè)置一下pod的索引

rm ~/Library/Caches/CocoaPods/search_index.json
pod setup

之后再執(zhí)行一下搜索就可以搜到了。


15547088234370.jpg

三线婚、 示例工程驗(yàn)證

步驟1 新建一個(gè)工程

使用pod 'PrivatePodDemo001'可以將需要的源碼下載下來遏弱。

15547092987659.jpg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市塞弊,隨后出現(xiàn)的幾起案子漱逸,更是在濱河造成了極大的恐慌泪姨,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰抒,死亡現(xiàn)場離奇詭異肮砾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袋坑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門仗处,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枣宫,你說我怎么就攤上這事婆誓。” “怎么了也颤?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長歇拆。 經(jīng)常有香客問我鞋屈,道長故觅,這世上最難降的妖魔是什么输吏? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮躲查,結(jié)果婚禮上它浅,老公的妹妹穿的比我還像新娘。我一直安慰自己镣煮,他們只是感情好姐霍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著典唇,像睡著了一般镊折。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上介衔,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天恨胚,我揣著相機(jī)與錄音,去河邊找鬼炎咖。 笑死赃泡,一個(gè)胖子當(dāng)著我的面吹牛寒波,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播升熊,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼俄烁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了僚碎?” 一聲冷哼從身側(cè)響起猴娩,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勺阐,沒想到半個(gè)月后卷中,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渊抽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年蟆豫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懒闷。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡十减,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愤估,到底是詐尸還是另有隱情帮辟,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布玩焰,位于F島的核電站由驹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏昔园。R本人自食惡果不足惜蔓榄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望默刚。 院中可真熱鬧甥郑,春花似錦、人聲如沸荤西。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皂冰。三九已至店展,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秃流,已是汗流浹背赂蕴。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舶胀,地道東北人概说。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓碧注,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糖赔。 傳聞我的和親對象是個(gè)殘疾皇子萍丐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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