1. 程式人生 > >cocoapods應用第二部分-私有庫相關

cocoapods應用第二部分-私有庫相關

我們在這裡,使用的是 第一部分使用pod lib create YohunlUtilsPod 建立的framework工程來說明.其建立過程在此就不重複了,當然你也可以下載我已經建立好的demo https://github.com/yohunl/YohunlUtilsPod PS:既然是私有庫,那麼我們基本上不會使用github的,相信大家公司都有相應的git平臺.不管使用什麼git平臺提供的服務,操作方式都是一樣的 一:建立自己私有的spec倉庫        開啟隱藏目錄,可以使用終端命令  defaults write com.apple.finder AppleShowAllFiles -bool TRUE;killall Finder  (關閉隱藏的終端命令 defaults delete com.apple.finder AppleShowAllFiles;killall Finder)  開啟隱藏目錄.cocoapods(這個目錄在你的個人目錄下,比如我電腦上是 /Users/yohunl/.cocoapods
)
大家請注意上圖,  .cocoapods下的資料夾 repos,這裡的repo是repository倉庫的縮寫.repos下存放的是倉庫的集合.這裡的master就是cocoapods官方建立的倉庫,也就是我們所謂的公共庫 specs目錄下存放的就是所有的提交到cocoapods的開源庫的podspec檔案的集合. 其結構如下:
其組成方式是      specName  ——   版本version ——  specName.podspec   (master庫裡的現在是  specName.podspec.json,這個.json檔案就是 podspec檔案加了一個字尾而已,至於為什麼官方庫要這麼做,我也沒查到理由.可以採用命令pod ipc spec
來將spec檔案轉換成json.) 當然了,你可能很奇怪這個資料夾是怎麼來的,這個資料夾是當你安裝了cocoapods後,第一次pod install的時候,cocoapods自己通過命令  pod setup 來建立的(這個pod setup命令是不需要你手動執行的).不過如果你想重建這個官方repos倉庫集合的話,可以自己執行 pod repo remove master pod setup 此兩句是重建pod的repo資料夾 言歸正傳 我們在github上建立一個空的倉庫,命名為yohunlSpecs,這個倉庫是用來存放我們自己的所有的私有庫的specs檔案的,就如同官方的
https://github.com/CocoaPods/Specs
 是用來存放所有官方的specs檔案一樣
建立一個本地的私有repos 官方參考的私有 pod repo add REPO_NAME SOURCE_URL 其中的 REPO_NAME是我們要新增的私有repo的名稱,後面的是其地址,注意這個只是建立而已,也就是隻是在~/.cocoapods/repos 目錄下 目錄下添加了一個資料夾而已,但是,並沒有在其中新增 spec檔案 在終端執行命令  pod repo add yohunlSpecs  [email protected]:yohunl/yohunlSpecs.git  或者  pod repo add yohunlSpecs  https://github.com/yohunl/yohunlSpecs.git  ,很多文章說,這裡最好是採用http模式的git地址,不過我試了,兩者都是可以的,執行命令後 在.cocoapods目錄下
看到沒,這裡出現了一個我們自己的私有倉庫  yohunlSpecs,這是一個空的倉庫 二:新增我們在教程一中建立的工程 YohunlUtilsPod的spec檔案到上面建立的yohunlSpec庫中去 開啟工程 的spec檔案
根據需要修改對應的項.這個檔案本質上是一個ruby格式的檔案. 修改完畢後,執行  pod spec lint或者pod lib lint修改完,此命令用來驗證這個spec是不是合格的 進入工程目錄 使用命令 pod spec lint,你會得到 [!] 2 out of 2 specs failed validation.,這個錯很奇怪,不用管它!其它錯誤不能不管哦,要根據提示修改,直到沒有其它錯誤為止! 採用命令  pod lib lint來驗證就是正確的.
查了一下這兩個命令之間的區別 pod spec lint —用來驗證本地使用pod spec create新增的podspec檔案(但是,這個命令常常會出現 2 out of 2 specs failed validation.此類的錯誤,故推薦大家都使用 pod lib lint)  pod lib lint  這個是檢驗由pod lib create建立的lib工程的spec的合法性(經過檢驗,這個命令是也是可以適用於第一種情況的.) 經過命令的檢驗,我們的YohunlUtilsPod.podspec符合規範了.由於cocoapods的repo是基於git的tag的,所以我們需要給工程YohunlUtilsPod新增一個tag.注意,這裡新增的tag需要和podspec檔案中描述的一致,不然以後別人引用的時候,cocoapods就不知道該下載什麼程式碼了. 給工程新增一個tag,可以用第三方工具,也可以採用命令列(xcode本身不支援設定tag).,此處我採用的是我熟悉的工具tower,你們也可以使用自己熟悉的工具或者命令列 如果用命令列的話 $ git tag '1.0.0' $ git push --tags $ git push origin master
建立一個tag 1.0.0(和podspec檔案中描述的一致),push到github.進入github,可以看到,新增成功了.此處衍生一下,這裡一般是類似1.0.2的版本號。版本號的規範參考http://semver.org/lang/zh-CN/  我們以後建立的工程的版本號最好都是符合規範的!
執行命令  pod repo push yohunlSpecs YohunlUtilsPod.podspec   [在YohunlUtilsPod.podspec所在的目錄下哦]
執行完成後,可以看到.cocoapods發生了變化了
可以看到,我們的podspec檔案已經新增到了yohunlSpecs這個repo下了,並且已經按照格式建立好了
執行pod search YohunlUtilsPod
可以看到,已經建立好了. 三:測試其是否可用    建立一個普通的工程命名為TestPodFrameworkDemo,在目錄下新增podfile檔案,新增pod 'YohunlUtilsPod' $ pod init  建立podfile檔案    修改檔案podfile內容為下 target 'TestPodFrameworkDemo' do pod 'YohunlUtilsPod' end target 'TestPodFrameworkDemoTests' do end 執行 $ pod install 這個時候,得到提示
尼瑪!!!!不科學啊,命名pod search有,為什麼執行的時候就沒有了????什麼情況???? 其實是這樣的,如果你不指定的話,pod install只會在master下搜尋有沒有,而我們的spec檔案在yohunlSpecs下面,當然找不到了!
解決方式 在podfile檔案最上方新增 source 'https://github.com/yohunl/yohunlSpecs.git'  #我們自己的私有spec倉庫的地址 source 'https://github.com/CocoaPods/Specs.git'  #官方倉庫的地址 預設情況下,如果你不新增source的話,系統會預設使用 https://github.com/CocoaPods/Specs.git官方源,但是當你添加了source後,系統就不再自動搜尋 官方源,所以這兩句都必須新增!!!!! 例如 當你的檔案中   包含有 source 'https://github.com/yohunl/NetworkLibSpec.git',那麼記得也要新增預設的官方的 source 'https://github.com/CocoaPods/Specs.git' 要不然,則其它基於官方的都不能pod了 例如: platform :ios, '7.0' target 'NetworkLibTest' do pod 'NetworkLib' pod 'SDWebImage' #pod 'NetworkLib', :path => '../NetworkLib' #pod 'NetworkLib', :path => '~/code/Cocoapods/podTest/PodTestLibrary'       end target 'NetworkLibTestTests' do end 沒有包含 source 'https://github.com/CocoaPods/Specs.git'的話,則會出現 lingyohunldeMBP:NetworkLibTest yohunl$ pod install
Updating local specs repositories
Cloning spec repo `yohunl` from `https://github.com/yohunl/NetworkLibSpec.git`
Analyzing dependencies
[!] Unable to find a specification for `SDWebImage` 再次執行  pod install,成功
以後,誰想使用我們這個私有庫,需要做的是 在podfile檔案中新增   還有 pod 'YohunlUtilsPod' 題外話: 1.怎麼檢視本地有多少個repos呢? 命令  pod repo可以知道本地有幾個repo!! SZ-lingdaiping:TestPodFrameworkDemo yohunl$ pod repo

master
- Type: git (master)
- URL:  https://github.com/CocoaPods/Specs.git
- Path: /Users/yohunl/.cocoapods/repos/master

1 repo 剛剛從中可以看出,其不僅列出了本地共有多少個repo,還包括每個repo的地址 2.對於一個repo下有很多個podspec,例如master下有成百上千個,那麼我們怎麼統一驗證他們是否都符合規範呢? 例如我們可以用命令進入~/.cocoapods/repos/yohunlPodSpecs下執行的pod repo lint .(有一個點的)是驗證這個repo下所有的 /Users/yohunl/.cocoapods/repos/yohunl
SZ-lingdaiping:yohunl yohunl$ pod repo lint .

Linting spec repo `yohunl`

.

Analyzed 1 podspecs files.

All the specs passed validation. 3.cocoapods的常用命令 pod list  列出所有可用的第三方庫 pod search query 搜包含query的第三方庫   注意:這兩個命令只搜存在於本地 /Users/yohunl/.cocoapods/ 下的檔案 如果搜尋網路的,可以先更新本地  pod repo update master,然後再搜尋 pod lib create frameworkName  建立一個framework工程 pod lib lint 驗證一個podspec檔案是否有錯誤 podinstall --no-repo-update錯誤 這裡的引數no-repo-update,是告訴cocoapods不要更新repo.有麼有感覺每次pod install都很慢,那是因為每一次都會先更新本地的repo,加上此引數,就跳過了這個過程,將會很快 pod init 可以建立一個空的podfile pod install 命令時會引發許多操作。要想深入瞭解這個命令執行的詳細內容,可以在這個命令後面加上 --verbose 4.其它使用我們建立的framework的方式 當我們新增 並且執行pod install後
進入.cocoapods資料夾,可以看到  又多了一個repo:yohunl!!! 這說明什麼問題呢? 這說明我麼之前的 pod repo add yohunlSpecs  [email protected]:yohunl/yohunlSpecs.git pod repo push yohunlSpecs YohunlUtilsPod.podspec 刪除repo的命令 pod repo remove yohunlSpecs     [pod repo remove  repo名稱]
我們刪除我們新增的私有庫 [哈哈,其實你都顯示了隱藏目錄了,也可以直接進去直接刪除資料夾的!] pod repo remove yohunl pod repo remove yohunlSpecs 刪除後,可以看到
你再執行pod install 發現 系統會自己根據 去下載對應的repos 如果不加入repos(也就是不新增podspec檔案到系統的.cocopods資料夾下).能不能使用cocoapods呢?也是可以的 target 'TestPodFrameworkDemo' do pod 'YohunlUtilsPod' , :path => '/Users/yohunl/YohunlUtilsPod'  end target 'TestPodFrameworkDemoTests' do end 當我們下載了一個含有podspec檔案的程式碼後,如果想使用它,可以直接通過pod的path指定路徑 (以前還可以使用 :local,不過現在已經被:path取代了)..cocopods資料夾下的 注意:此處:path後面的路徑是指podspec檔案所在目錄的路徑 執行 pod install 也是可以的
不過這種方式新增的,cocoapods會放在 Development Pods資料夾下 下面這種方式也是可以的 ,並不需要將podspec加入到私有倉庫 #source 'https://github.com/yohunl/yohunlSpecs.git' #source 'https://github.com/CocoaPods/Specs.git' target 'TestPodFrameworkDemo' do #pod 'YohunlUtilsPod' , :path => '/Users/yohunl/YohunlUtilsPod'  pod 'YohunlUtilsPod',:git => 'https://github.com/yohunl/YohunlUtilsPod.git' end target 'TestPodFrameworkDemoTests' do end 還有以下的方式 #pod 'YohunlUtilsPod' , :path => '/Users/yohunl/YohunlUtilsPod'  #可以 #pod 'YohunlUtilsPod',:git => 'https://github.com/yohunl/YohunlUtilsPod.git'  #可以 #pod 'YohunlUtilsPod',:podspec => '/Users/yohunl/YohunlUtilsPod/YohunlUtilsPod.podspec'  #指定podspec檔案,可以 #pod 'YohunlUtilsPod',:podspec => 'https://github.com/yohunl/YohunlUtilsPod/blob/master/YohunlUtilsPod.podspec'  #經過測試,這種方式不行 #pod 'YohunlUtilsPod',:podspec => 'https://github.com/yohunl/YohunlUtilsPod.git/YohunlUtilsPod/YohunlUtilsPod.podspec' #測試不行,提示找不到podspec檔案 如果你能夠確定你的podspec檔案是正確可用的話,完全可以直接向https://github.com/yohunl/yohunlSpecs新增podspec檔案(當然要符合格式要求哦) 5.打包framework的第三方外掛命令 cocoapods的外掛cocoapods-packager來完成類庫的打包,安裝命令sudo gem install cocoapods-packager  它的好處是,需要特別強調的是,該外掛通過對引用的三方庫進行重新命名很好的解決了類庫命名衝突的問題 參考文件

相關推薦

cocoapods應用第二部分-私有相關

我們在這裡,使用的是 第一部分使用pod lib create YohunlUtilsPod 建立的framework工程來說明.其建立過程在此就不重複了,當然你也可以下載我已經建立好的demo https://github.com/yohunl/YohunlUti

cocoapods應用第一部分-xcode創建.framework相關

all 輸入 一次 oot 不出 模擬 builds bject pos 問題的提出: 隨著項目的越來越大,可能會出現好幾個團隊共同維護一個項目的情況,比如:項目組A負責當中的A塊,項目組B負責當中的B塊.....這幾塊彼此之間既獨立,也相互聯系.對於這樣的情況,

cocoapods應用第一部分-xcode建立.framework相關

問題的提出: 隨著專案的越來越大,可能會出現好幾個團隊共同維護一個專案的情況,例如:專案組A負責其中的A塊,專案組B負責其中的B塊.....這幾塊彼此之間既獨立,也相互聯絡.對於這種情況,可以採用約定的方式,比如,你只修改你那塊,不要修改公共的.如果要修改公共的,那麼必須要

第二篇:相關操作

一 系統資料庫 information_schema: 虛擬庫,不佔用磁碟空間,儲存的是資料庫啟動後的一些引數,如使用者表資訊、列資訊、許可權資訊、字元資訊等performance_schema: MySQL 5.5開始新增一個數據庫:主要用於收集資料庫伺服器效能引數,記錄處理查詢請求時發生的各種事件、鎖等

2、編寫第一個django應用(投票應用),第二部分簡要過程

quest pre sca python delet delete ice message imp 上一章https://blog.51cto.com/yht1990/2382801 本章節官網詳細參考:https://docs.djangoproject.com/zh-h

使用CocoaPods建立自己的私有-iOS元件化第一步

目前iOS元件化常用的解決方案是Pod+路由+持續整合,通常架構設計完成後第一步就是將原來工程裡的模組按照架構圖分解為一個個獨立的pod工程(元件),今天我們就來看看如何建立一個Pod私有庫。 新建:pod lib create 假設我們需要建立的庫名為TestLib,下面我們使用Pod官方提供的建立模板:

3-cocoaPods私有制作

create lint 執行 install 是否 們的 系統 assets push CocoaPods 私有庫制作方式一1. 新建私有git庫 可以gitlab,也可以github,當然github是公共的,私有的得交費。 2. 創建工程 可以使用pod命令來自動創建

組件化開發3-cocoaPods私有制作

分支 tag net 測試工程 如果 tool 輸入 git Coding 一、創建索引項目ZHMCSSpec 1-1 在代碼托管網站上建立索引項目ZHMCSSpec(以這個名稱為例)   1-2 在本地創建ZHMCSSpec,並與遠程索引建立聯系    po

達夢數據第二部分

insert def 技術分享 lob 建立 pat com let ext 1.達夢數據庫創建表 達夢數據安裝完成之後,打開DM管理工具,可以進行數據庫的相關操作。可以通過新建查詢,在SQL命令窗口輸入sql語句,創建表,sql輸入完成之後,選擇sql進行執行,則會在表空

openssl的應用私有CA相關內容

openssl的應用及私有CA相關內容以CA為核心生成的一套安全架構體系我們稱之為:PKI:Public Key Infrastructure,公鑰基礎設施;其包含的內容:1.簽證機構:CA2.證書註冊機構:RA3.證書吊銷列表:CRL4.證書存取庫:CR 國際標準化組織(ISO)定義了證書的結構和認證標準:

Cron 觸發器及相關內容 (第二部分)

三. cron 表示式的格式Quartz cron 表示式的格式十分類似於 UNIX cron 格式,但還是有少許明顯的區別。區別之一就是 Quartz 的格式向下支援到秒級別的計劃,而 UNIX cron 計劃僅支援至分鐘級。許多我們的觸發計劃要基於秒級遞增的(例如,每45秒),因此這是一個非

MyEclipse教程:使用UML建立模組——第二部分(二)

MyEclipse 線上訂購年終抄底促銷!火爆開搶>> 【MyEclipse最新版下載】 UML2建模檔案儲存在建模儲存庫中,建模可用於生成Java程式碼,或者可以從程式碼生成模型。 本教程介紹如何執行與建模儲存庫相關的任務。 您將學到如何: 建立UML模型儲存庫

MyEclipse教程:使用UML建立模組——第二部分(一)

MyEclipse 線上訂購年終抄底促銷!火爆開搶>> 【MyEclipse最新版下載】 UML2建模檔案儲存在建模儲存庫中,建模可用於生成Java程式碼,或者可以從程式碼生成模型。 本教程介紹如何執行與建模儲存庫相關的任務。 您將學到如何: 建立UML模型儲存庫

Cocoapods建立私有——初級版

一、 首先簡單瞭解下cocoapods的機制 cocoapods有個遠端索引庫,索引庫下放著框架的描述資訊:框架的名稱,框架的版本號,框架的描述檔案(.spec),開發者上傳的程式碼都是位於索引庫的遠端地址下。當你進行pod初始化(pod setup)時,會把遠端索引庫下載到本地,即生成一個

讓你不再害怕指標的應用-全程模擬+註解(第二部分陣列)

讓你不再害怕指標的應用-全程模擬+註解(第二部分:陣列)(持續更新) 寫此文章一是為了分享,二是為了溫習! 預計包含的內容為:變數如int  、陣列  、結構體  、列舉 、聯合體、(這個自己也在瞭解)。 軟體:CODE::Blocks  &n

Intel IPP密碼 IPPCP 2018——第二部分 對稱密碼演算法開發說明與示例程式碼

2. Symmetric Cryptography 2.1加解密步驟 其中<Alg>指具體的密碼演算法,<Mode>指ECB、CBC、OFB、CFB、CTR模式。 執行步驟: 步驟1. 獲取ctx大小:ipps<Alg>GetSize(int* p

使用Boost::Python在C++應用程式中嵌入Python:第二部分

在第1部分中,我們瞭解瞭如何在C++應用程式中嵌入Python,包括從應用程式呼叫Python程式碼的幾種方法。雖然我之前承諾在第2部分中完整實現一個配置解析器,但我認為看一下錯誤解析會更有建設性。一旦我們有一個很好的方法來處理Python程式碼中的錯誤,我將在第3部分中

iOS元件化開篇(Cocoapods遠端和本地私有製作)

目錄 Git基本操作 Cocoapods釋出自己的框架 1.安裝cocoapods 2.使用cocoapods 3.cocoapods釋出自己的框架 Cocoapods本地私有庫 前言 自己的工具庫和框架以前都是直接在模組裡面操作的,沒有做成私有化或者coco

iOS CocoaPods私有

級別: ★★☆☆☆ 標籤:「iOS」「CocoaPods」「私有庫」 作者: 憶思夢 審校: QiShare團隊 先說下CocoaPods拉取開源庫的原理: CocoaPods 有一個開源的索引倉庫Specs,倉庫存放著所有開源庫的各個版本的.podspec檔案,.podspec檔案包含中記錄著

CocoaPods 私有 實現元件化

先說下CocoaPods拉取開源庫的原理: 我們知道 CocoaPods 有一個開源的索引倉庫[Specs](https://github.com/CocoaPods/Specs),倉庫存放著所有開源庫的各個版本的`.podspec`檔案,`.podspec`檔案包含中記錄