CocoaPods之----製作篇
如果我們已經做好了一個不錯的庫,並上傳到github,這時,你會想讓這個庫支援pod使用,下面就來介紹如何製作自己的pod。
1.cd進入本地某個目錄,從github上clone下專案,已經有專案的忽略這一步。
2.cd進入專案目錄,這裡我用我的開源專案為Test來說,進去後輸入
git tag 'v1.0.0'
git push --tags
git push origin master
給專案加入一個tag。以便pod能自動識別,注意這裡版本號加“v”,不然後面會有坑。
3.生成.podspec檔案,這個是pod的描述檔案,很重要
pod spec create https ://github.com/lupeihong/Test
執行後會看到當前目錄下會出現一個Test.podspec檔案,用編輯器開啟,會有很多註釋,根據自己的專案修改,得到類似下面的內容:
Pod::Spec.new do |s|
s.name = "Test"
s.version = "1.0.0"
s.summary = "空檢視處理"
s.description = "A UIView category for showing empty datasets whenever the view has no content to display."
s.homepage = "https://github.com/lupeihong/Test"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "lupeihong" => "[email protected]" }
s.platform = :ios, "6.0"
# When using multiple platforms
# s.ios.deployment_target = "5.0"
# s.osx.deployment_target = "10.7"
s.source = { :git => "https://github.com/lupeihong/Test.git", :tag => "v#{s.version}" }
s.source_files = "Classes", "Test/UIView+Test.{h,m}"
s.framework = "UIKit"
# s.frameworks = "SomeFramework", "AnotherFramework"
# s.library = "iconv"
# s.libraries = "iconv", "xml2"
s.requires_arc = true
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
# s.dependency "JSONKit", "~> 1.4"
end
最重要的是s.source_files這個。你要把你要包含的檔案路徑找對了。 然後用萬用字元匹配好了。當然其他項,你看看註釋啥的 選擇性的填一些。
建議直接拿一些成熟的開源庫的podspec改就行,生成的模板裡有很多冗餘的屬性。
4.接著 把修改好的檔案push到github上去
git add Test.podspec
git commit -am "add Test.podspec file”
git push -u origin master
最後,在你專案的Podfile裡面加入這個第三方庫的地址。
pod 'Test', :git => 'https://github.com/lupeihong/Test.git'
然後pod update,就能通過pod來使用你自己庫。
5.發現沒有,以上的方法,使用pod search 是搜不到你的庫的,因為這只是你私有的庫而已。在你本地,前往~/.cocoapods/repos/master/Specs,你會看到cocoapod所有公有的開源庫配置,這個通過cocoapod官方在github的specs來管理,地址為https://github.com/CocoaPods/Specs 。說到這裡,你會想把這個庫fork分支下來,clone到你本地,把自己的Test.podspec加入,然後add、commit、 push,最後在github上pull request來和官方的主分支合併,可是你會發現請求馬上被自動關閉。WHY!!!!!!
雖然一開始使用GitHub Pull Requests來整理所有公共pods效果很好。但是,隨著Pod數量的增加,這個工作對於spec維護人員Keith Smiley來說變得十分繁雜。甚至一些沒有通過$ pod lint的spec也被提交上來,造成repo無法build。
CocoaPods 0.33中加入了Trunk服務。CocoaPods Trunk服務的引入,解決了很多類似的問題。CocoaPods作為一個集中式的服務,使得分析和統計平臺數據變得十分方便。下面來說說怎麼分佈CocoaPod。
6.要想使用Trunk服務,首先你需要註冊自己的電腦。這很簡單,只要你指明你的郵箱地址(spec檔案中的)和名稱即可。
pod trunk register 123456@qq.com 'lupeihong' --description='macbook air'
後面可以加上 –verbose可選引數,為了便於輸出註冊過程中的除錯資訊
然後順利的話你會收到一份郵件,需要點選驗證。
可以使用
pod trunk me
檢視自己的註冊資訊
ps:當然,如果你的pod是由多人維護的,你也可以新增其他維護者
pod trunk add-owner ARAnalytics [email protected].org
6.上面的工作完成之後,我們就可以開始 trunk push 了提交我們的podspec檔案。
pod trunk push 命令會首先驗證你本地的podspec檔案(是否有錯誤),之後會上傳spec檔案到trunk,最後會將你上傳的podspec檔案轉換為需要的json檔案
第一步驗證podspec檔案也可以自己去做
pod spec lint Test.podspec
如果驗證成功的話會顯示
Test.podspec passed validation.
但你收到類似訊息,如:
[!] /usr/bin/git clone https://github.com/lupeihong/Test.git /var/folders/z2/h6c1f1hj72b6p5y3dhgjd27c0000gn/T/d20150827-4039-1ujw0u9 --single-branch --depth 1 --branch v1.0.0
Cloning into '/var/folders/z2/h6c1f1hj72b6p5y3dhgjd27c0000gn/T/d20150827-4039-1ujw0u9'...
warning: Could not find remote branch v1.0.0 to clone.
fatal: Remote branch v1.0.0 not found in upstream origin
Unexpected end of command stream
why!!!再次崩潰。。cao
還記得你之前 add tag的時候嗎,如果你寫的是git tag '1.0.0'
這裡就會報錯,無語,一定記得要加“v”啊!
最後,輸入
pod trunk push Test.podspec
等待部署成功。
上面的程式碼做了三件事:
*驗證你的podspec檔案是否合法。在trunk方式之前我們一般用“pod spec lint”命令進行驗證。
*上傳podspec檔案到trunk伺服器(其實最終也會自動新增到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁瑣操作)
*將你上傳的podspec檔案轉成json格式檔案
執行上面的push操作,就相當於你把你的原始碼提交給CocoaPods團隊稽核了,一般需要一到兩個工作日可以稽核結束。這種心情有點像提交App給Apple稽核,哈哈。
7.檢視我們自己建立的pods依賴庫
如果收到了cocoapods官方發過來的稽核通過郵件後,你很急著用pod search命名肯定會失望,沒收到,還記得我們本地的~/.cocoapods/repos/master/Specs嗎,還沒跟官方的github上的Specs同步,
執行一次
pod setup
或者
pod update
來更新本地快取的Spec庫,再去search就能看到了
就能夠用
pod 'Test', '~> 1.0.0'
這樣去安裝自己pod依賴庫了
而.podspec檔案也可以作為管理內部程式碼的利器
pod 'Z', :path => 'path/to/directory/with/podspec'
相關推薦
CocoaPods之----製作篇
如果我們已經做好了一個不錯的庫,並上傳到github,這時,你會想讓這個庫支援pod使用,下面就來介紹如何製作自己的pod。 1.cd進入本地某個目錄,從github上clone下專案,已經有專案的忽略這一步。 2.cd進入專案目錄,這裡我用我的開源專案為T
CocoaPods實踐之製作篇
總結CocoaPods製作步驟: CocoaPods製作要點: 1、需要新增license型別,這裡選擇了MIT License。 2、.podspec檔案內容參考 Pod::Spec.new do |s| s.name
CSS3 的box-shadow進階之 - 動畫篇 - 製作輻射動畫
本篇文章是上一篇講box-shadow基礎知識的延伸,建議先花幾分鐘閱讀那篇文章,點選閱讀,再來看這篇。 除了box-shadow屬性知識外,製作動畫,還需要對CSS3的animation, @keyframes製作動畫有所瞭解。 接下來,還是那張圖。。 基本思路如下: 1.寫好一
CocoaPods製作篇(1)
一、建立自己的github倉庫 CocoaPods都託管在github上(官方連結為: https://github.com/CocoaPods ),所有的Pods依賴庫也都依賴github,因此第一步我們需要建立一個屬於自己的github倉庫。倉庫建立介面如下圖: Paste_Image.png
CocoaPods---製作篇(最新版)
一.http://blog.csdn.net/wzzvictory/article/details/20067595,使用王中周同學的步驟到第四步結束後停止,因為上傳到官方倉庫已經不可用了 二.
Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運行和發布過程解析
qt 5 對話 讓我 進度 qmake ctr deploy 設定 設置 轉載請註明出處:CN_Simo。 題解: 本篇內容主講Qt應用從創建到發布的整個過程,旨在幫助讀者能夠快速走進Qt的世界。 本來計劃是講解Qt源碼靜態編譯,如此的話讀者可能並不能清楚地知
Qt入門之基礎篇 ( 一 ) :Qt4及Qt5的下載與安裝
mingw ins 第3版 點擊 調試 但我 關系 構建 eas 轉載請註明出處:CN_Simo. 導語: Qt是一個跨平臺的C++圖形界面應用程序框架。它提供給開發者建立圖形用戶界面所需的功能,廣泛用於開發GUI程序,也可用於開發非GUI程序。Qt很容易擴展,並
[轉]Eclipse插件開發之基礎篇(1) 插件開發的基礎知識
作用 原本 services 註冊 1-1 啟動 創建 abs class 原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/13/eclipse_plugin_1_0_2.html 名詞翻譯 有一些名詞在翻譯的
[轉]Eclipse插件開發之基礎篇(3) 插件的測試與調試
case ews ... 有時 sam cancel workbench osgi ring 原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html 1. 使用JU
[轉]Eclipse插件開發之基礎篇(4) OSGi框架
動作 update 執行 創建 class cti 指定 mpc 代碼 原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html 1. 什麽是OSGi框架 O
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之四
ext one mar solid ul li lis class eight seo <!doctype html><html><head><meta charset="utf-8"><title>無標題文檔&l
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之一
電腦 text htm document cal ngs all ply cti <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <t
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之二
ext tco confirm char utf type lang html click <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8">
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之三
var wid gin ack document type solid load ntb <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之五
mon one cli tle .get put cas true stc <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <titl
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之十
cell pan adding rowspan add 歌曲 作者 ctype lsp <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &l
與其放在電腦裏占內存,還不如拿出來幫助一群小白白之html篇之十一
dcl body window let ctype urn doctype 繼續 document <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><
Node.js安裝及環境配置之Windows篇
npm安裝 data- 緩存 裏的 環境配置 cmd命令 服務 string ext 1、本機系統:Windows 10 Pro(64位)2、Node.js:v6.9.2LTS(64位) 二、安裝Node.js步驟 1、下載對應你系統的Node.js版本:https:/
UIKit學習之UIButton篇
中心 間距 insets sharp ets lee highlight con view 1、應用場景,文字居左,圖片居中 //設置圖片間距,使其居右對齊 btn.imageEdgeInsets = UIEdgeInsetsMake(0,btn.size.width
視頻教程:Java七大外企經典面試套路之基礎篇
視頻教程:Java七大外企經典面試套路之基礎篇 視頻教程:Java七大外企經典面試套路之基礎篇 Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執行的語言,語法規則和C++類似。同時,Java也是一種跨平臺的程序設計語言。 本教程主要給