1. 程式人生 > >CocoaPods之----製作篇

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也是一種跨平臺的程序設計語言。 本教程主要給