POD生成本地庫,遠程公共庫和遠程私有庫總結

#本文供剛接觸代碼庫且瀏覽了其他文章依然摸不著頭腦的同事,借鑒;請代碼庫老司機指點#

最近3天接觸建立自己代碼庫,網絡上看了很多優(yōu)秀的文章本地庫/遠程公共庫/遠程私有庫? , ?遠程私有庫?,?本地庫/遠程私有庫?,使我對庫的認識理解有了巨大巨大的提升,自我的升華.這些文章本身已經非常詳細具體,但對于我,在閱讀實踐的過程中遇到了層出不窮的坑,欲報無門的感受讓我記憶深刻.另一方面初步掌握新知識時,總結記錄是從小到大教育過我的老師們千叮萬囑的事情.所以嘗試寫下這篇筆記.

相信我是站在第一次接觸代碼庫的角度來寫這篇文章的,現在我陪你一起認識,搭建自己的代碼庫.

目錄:

一:代碼庫 用途 :

二:使用工具 : CocoPods /GitHub/SourceTree

三:本地庫搭建

四:遠程公共庫搭建

五:遠程私有庫搭建

干貨線


一:代碼庫 用途 :

1.功能代碼抽離復用,追求一勞永逸,即使用的第三方庫,如AFNNetwork;我們可以建立功能性代碼的基礎上,實現組件化架構;也是走上大神之路,在gitHub上分享自己的開源庫,達到上萬星成就的第一步(又說出了我的夢想)

2.新項目建項時大多需要的Base代碼集合,一步引入

?二:使用工具 : CocoPods /GitHub/SourceTree

cocopods,github:既然你已經接觸私有庫了,這兩個工具就默認你是熟悉的;如果不的話,按command+w,再見

sourceTree:上面提供的三個文檔鏈接中都是使用終端操作的,因為公司用sourceTree習慣了,所以用了sourceTree軟件,如果你不熟悉使用,通過終端操作是一樣的,都不復雜.

三:本地庫-搭建

本地庫是最簡單的,只需要新建一個podspec格式的文件,準確完善文件中的描述信息(填寫格式很重要)

podspec:cocopod本地庫的說明書,內容是由你來填寫,很簡單的就會出現很多坑

1.終端cd你想存放本地庫的文件夾

2.輸入 : pod spec create <本地庫名字>

3.會生成一個模板podspec文件如下圖

podspec文件

5.根據以下內容完善你的podspec文件,大部分#注釋的暫時不需要,以下內容是必填的


s.version = 0.0.1

s.summary = "簡單描述"

s.description = <<-DESC

詳細描述,長度要大于簡單描述,要另起一行寫在-DESC和DESC中間

DESC

s.homepage = "主頁,本地庫用不到,可以個性發(fā)揮"

s.license = s.license? ? ? = { :type => "MIT", :file => "FILE_LICENSE" } # 開放協(xié)議根據自己的需要填寫? 一般可以填寫MIT,第二個參數指定加載文件的名字

s.autor = { "名字" => "郵箱" }

s.platform = "支持平臺和版本"

s.soure = { :git =>"托管git代碼倉庫地址,本地庫填寫本地庫文件夾的地址如:/Users/Master/Documents/第三方庫/Example1", :tag => s.version }#注意格式s.version

s.souce_files = "soure中關鍵代碼的路徑"


最重要的是souce_files 字段 一定要? 一定要 一定要清晰準確? 其中當前是podspec文件所在層級,填寫源代碼所在的路徑;例如Classes/**/*.{h,m},**是通配符,而且會一層一層的向下匹配,.{h,m}是指定匹配.h/.m文件,此處注意的是 如果存在xib格式的文件,則必須指定h./m.類型,不然加載xib會出錯,xib和圖片等資源型文件應通過s.resource_bundles字段指定.

6.創(chuàng)建license文件,文件名為 FILE_LICENSE (與podspec中設置的對應即可);文件格式為文稿;內容都一樣,只需要將劃線的地方改為你個人的信息

MIT License

Copyright (c) 2017 zhenghaonagehao

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

7.在本地庫文件夾中新建名為:Classes的文件夾,存放源碼文件,不然pod加載不到


Classed的文件夾中存放源碼

8.對本地庫進行git管理

cd 到本地庫,一次執(zhí)行下列命令

git init?

git add .

?git commit -m'initial'

git tag 0.0.1

git push?

9.使用終端檢測,輸入 pod spec lint?

如果存在錯誤如下圖,根據提示進行調整,

錯誤提示

常出錯誤:

1, Could not find remote branch 0.0.1 to clone. 這個問題大多是tag值打的不對,因為pod是根據git的tag值進行加載的;如果修改了本地庫中源碼的內容,不需要對使用本地庫的項目進行pod install;但如果是添加/刪除了文件,則需要對使用本地庫項目進行pod install


10.創(chuàng)建使用本地庫的項目,pod file中如下格式設置,重要的是一定要設置為use_frameworks!

pod 'localResp' , :path => '../本地庫' ?(../ :表示從當前podfile的層級返回上一級;也可以設置為絕對路徑)


11.運行xcworkspace就可以看到pods中出現了本地庫中classes文件夾中的源碼

如果在使用本地庫的項目中引用不到本地庫中的文件,設置buildSetting中header search path,添加一個路徑為本地庫的絕對路徑,設置為recurive

四:遠程公共庫-搭建

1.可以通過快速創(chuàng)建lib的方式,同樣,私有本地庫也可以通過這個方式創(chuàng)建

pod lib create yourLibName

回答四個問題


使用英文做你的lib名稱,會自動填寫好部分文件的名稱.

2.在github上或者碼云上或者其他代碼托管平臺新建一個空的庫


空的倉庫

3.將github上倉庫的地址設置在podspec的s.source中,完善其他信息;將源碼文件放入publicLib文件夾的classes中;同時修改s.homepage


4.終端cd到publicLib,依次執(zhí)行

git init

git add .

?git commit -m'initial'

git remote add master github地址

git push --set-upstream master master

git tag 0.1.0 (版本號保持與pedspec中的一致)

git push --tags

完成后,github上的倉庫為下圖

5.通過lib spec lint進行驗證成功后,將podspec上傳到cocopod的索引庫中

注冊trunk风科,不是任何人都能推送洪灯,因為cocoapods依賴trunk服務器管理,所以需要通過trunk推送自己的podspec(cocoapods官網

命令:pod trunk register EMAIL [NAME]

[NAME]:? ? 表示NAME可有可無

pod trunk register 58999050@qq.com yuanzheng

驗證成功后,點擊郵箱就好了慨菱,打開會有點慢.

推送自己的podspec到cocoapods的索引庫

pod trunk push HttpManager.podspec --allow-warnings

注意:必須cd 進入到podspec目錄下,才能執(zhí)行這個代碼

注意:podspec文件中的s.version版本號要跟最新Tag一致

注意:podspec文件中的s.source倉庫地址也不能寫錯

測試能否索引到

pod search 自己倉庫

發(fā)現索引不到列林,其實已經上傳到cocoapods上了终吼,只不過需要重新更新索引文件

怎么更新pod索引文件?

原理:pod setup成功后會生成~/Library/Caches/CocoaPods/search_index.json文件

把search_index.json文件文件刪除音念,重新執(zhí)行pod search沪饺,就會重新更新索引.

作者:袁崢

鏈接:http://www.reibang.com/p/7b4667cde80b

來源:簡書

著作權歸作者所有。商業(yè)轉載請聯系作者獲得授權闷愤,非商業(yè)轉載請注明出處整葡。

6.現在可以在使用私有庫的項目中podfile像引用其他第三方庫如AFNWorking一樣使用自己的公共私有庫

五:遠程私有庫-搭建

與遠程公共庫相比,創(chuàng)建的是兩個私有庫

其他流程與遠程公共庫第5步開始不同

現在已經在github或其他平臺創(chuàng)建好了存放源碼的私有庫

5.創(chuàng)建第二個空私有庫,叫做索引庫,作用是用來存放podspec這個索引文件,將自己創(chuàng)建的索引庫添加到本地

pod repo add podSpecResp https://github.com/zhenghaonagehao/podspecResp.git,后面是索引庫遠程地址

通過pod respo 查看添加podSpecResp

6.同樣的方式,將podspec設置好后上傳到第二個私有庫,打上tag值,注意,tag值必須與podspec中version的描述一致,這樣就可以在使用私有庫的時候進行版本控制

pod repo push podSpecResp publicLib.podspec --allow-warnings

本地和遠程庫里都會有podspec文件

7.將第二個私有庫的地址添加到使用私有庫的podfile中


# 表示先去找私有,在找公有

source 'https://github.com/zhenghaonagehao/podspecResp.git'

source 'https://github.com/CocoaPods/Specs.git'

target '測試私有索引庫' do

pod 'publicLib'

pod 'AFNetworking', '~> 3.1.0'

end

六:使用注意

完善學習?繼續(xù)學習?Cocoapods使用私有庫中遇到的坑

接觸時間比較短,自己還是處在搭建基本庫的程度,其他更多的技能,可以在上面兩個連接中習得,像私有庫中依賴其他第三方庫,私有庫中存在xib格式的文件,圖片音頻,劃分子庫等

文中有錯誤理解感謝在評論中給與鞭策;搭建過程中遇到錯誤提示評論打上,經常逛簡書,會及時提供我的幫助

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末讥脐,一起剝皮案震驚了整個濱河市遭居,隨后出現的幾起案子,更是在濱河造成了極大的恐慌旬渠,老刑警劉巖俱萍,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異告丢,居然都是意外死亡枪蘑,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岳颇,“玉大人照捡,你說我怎么就攤上這事』安啵” “怎么了栗精?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞻鹏。 經常有香客問我悲立,道長,這世上最難降的妖魔是什么乙漓? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任级历,我火速辦了婚禮,結果婚禮上叭披,老公的妹妹穿的比我還像新娘寥殖。我一直安慰自己,他們只是感情好涩蜘,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布嚼贡。 她就那樣靜靜地躺著,像睡著了一般同诫。 火紅的嫁衣襯著肌膚如雪粤策。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天误窖,我揣著相機與錄音叮盘,去河邊找鬼。 笑死霹俺,一個胖子當著我的面吹牛柔吼,可吹牛的內容都是我干的。 我是一名探鬼主播丙唧,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼愈魏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了想际?” 一聲冷哼從身側響起培漏,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胡本,沒想到半個月后牌柄,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡侧甫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年友鼻,在試婚紗的時候發(fā)現自己被綠了傻昙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡彩扔,死狀恐怖,靈堂內的尸體忽然破棺而出僻爽,到底是詐尸還是另有隱情虫碉,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布胸梆,位于F島的核電站敦捧,受9級特大地震影響,放射性物質發(fā)生泄漏碰镜。R本人自食惡果不足惜兢卵,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绪颖。 院中可真熱鬧秽荤,春花似錦、人聲如沸柠横。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牍氛。三九已至晨继,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搬俊,已是汗流浹背紊扬。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唉擂,地道東北人餐屎。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像楔敌,于是被迫代替她去往敵國和親啤挎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容