如何發(fā)布自己的開源框架到CocoaPods
——在項(xiàng)目所在目錄下執(zhí)行* pod init * , 生成Podfile文件, 我們需要對其進(jìn)行相應(yīng)的配置。
在開發(fā)過程中柬赐,經(jīng)常會(huì)使用到第三框架绰姻,我們通過一個(gè)pod install命令枉侧,很方便的就將第三方框架加到我們自己的項(xiàng)目中。
用CocoaPods做iOS程序的依賴管理
在github創(chuàng)建倉庫完成狂芋,需要將倉庫檢出到本地(截取網(wǎng)上的例子)
注意:LICENSE(許可證)文件不可缺少榨馁,否則檢測spec文件時(shí),會(huì)有警告
將寫好開源框架/庫的Demo或者Example放到Git倉庫下帜矾,還要將要開源的文件夾也放入到git倉庫中(該文件夾在后面會(huì)被用到)(截取網(wǎng)上的例子)
項(xiàng)目發(fā)布到github后翼虫,我們在工程根目錄中初始化一個(gè)Podspec文件:創(chuàng)建自己項(xiàng)目的Podspec描述文件:
pod spec create ECGCustomAlertView
該命令將在本目錄產(chǎn)生一個(gè)名為ECGCustomAlertView.podspec文件屑柔。用編輯器(命令行:vim ECGCustomAlertView.podspec)打開該文件,里面已經(jīng)有非常豐富的說明文檔珍剑。下面介紹如何聲明第三方庫的代碼目錄和資源目錄掸宛,還有該第三方庫所依賴ios核心框架和第三方庫。這是我的podspec文件:
s.name:名稱招拙,pod search 搜索的關(guān)鍵詞,注意這里一定要和.podspec的名稱一樣,否則報(bào)錯(cuò) s.version:版本號(hào) s.ios.deployment_target:支持的pod最低版本 s.summary: 簡介 s.homepage:項(xiàng)目主頁地址 s.license:許可證 s.author:作者 s.social_media_url:社交網(wǎng)址,這里我寫的微博默認(rèn)是Twitter,如果你寫Twitter的話,你的podspec發(fā)布成功后會(huì)@你 s.source:項(xiàng)目的地址 s.source_files:需要包含的源文件 s.resources: 資源文件 s.requires_arc: 是否支持ARC s.dependency:依賴庫旁涤,不能依賴未發(fā)布的庫,如 s.dependency = ‘AFNetworking’ s.dependency:依賴庫迫像,如有多個(gè)可以這樣寫。我這里是托管在github上,所以這里將地址copy過來就行了瞳遍。
source_files:寫法及含義建議大家寫第一種或者第二種闻妓。
"ECGCustomAlertView/*"
"ECGCustomAlertView/ECGCustomAlertView/*.{h,m}"
"ECGCustomAlertView/*/.h"
“*” 表示匹配所有文件
“*.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件
“**” 表示匹配所有子目錄
設(shè)置tag號(hào),提交修改(注:只要spec文件被修改掠械,就必須重新執(zhí)行如下命令)
git commit -m "Release 1.0.1" (先提交當(dāng)前修改)
git tag 1.0.1 (添加tag)
git push --tags (推送tag到遠(yuǎn)程)
git push origin master (推送到遠(yuǎn)程到代碼倉庫)
提交之前先驗(yàn)證.podspec文件是否合法
pod spec lint ECGCustomAlertView.podspec
從錯(cuò)誤信息中得到:我的項(xiàng)目編譯不通過:ECGLoadsAlertViewController.h 類文件找不到由缆,需要將項(xiàng)目錯(cuò)誤的地方修改掉,如果顯示這樣的提示信息:
那么就是已經(jīng)配置成功猾蒂,可以提交到cocoapods了均唉,否則要將所有提示的error和warn修改掉。
驗(yàn)證.podspec文件報(bào)錯(cuò)肚菠,解決方法
先刪除遠(yuǎn)程tag
git push origin :refs/tags/1.0.1
修改spec文件(必須修改相應(yīng)的version和source)
重新執(zhí)行-->設(shè)置tag號(hào)舔箭,提交修改的步驟
podspec文件驗(yàn)證成功,通過trunk推送podspec文件
pod trunk push ECGCustomAlertView.podspec
如果有如下提示蚊逢,需要你用郵箱注冊一個(gè)trunk
用郵箱注冊trunk(建議:用github注冊的郵箱地址為好层扶,外加用戶名-->gitub的用戶名(我用郵箱用戶名也通過了))
pod trunk register 郵箱地址 "用戶名" --description="macbook pro"
之后會(huì)有一封帶有驗(yàn)證鏈接的郵件發(fā)送到你輸入的郵箱,點(diǎn)擊驗(yàn)證后就可以回來終端繼續(xù)提交操作了烙荷。
提交到cocoapods
pod trunk push ECGCustomAlertView.podspec
我碰到了個(gè)錯(cuò)誤提示:
網(wǎng)上查的解決方法:
實(shí)質(zhì):If you get this error message:(如果你獲得這個(gè)錯(cuò)誤信息:)
You need to set and unset that rename limit:
git config merge.renameLimit 999999
git config --unset merge.renameLimit
然后繼續(xù)提交到cocoapods镜会,如果成功會(huì)出現(xiàn):
Cocoapods: pod search無法搜索到類庫的解決辦法
刪除~/Library/Caches/CocoaPods目錄下的search_index.json文件
pod setup成功后會(huì)生成~/Library/Caches/CocoaPods/search_index.json文件。
終端輸入rm ~/Library/Caches/CocoaPods/search_index.json
刪除成功后再執(zhí)行pod search
稍等片刻就會(huì)出現(xiàn)你所要搜的類庫了终抽。
podspec文件更新方法
以后我們的庫有新版本時(shí)戳表,我們可以修改相應(yīng)的version和source。
有時(shí)你可能會(huì)遇到這種情況:執(zhí)行pod trunk push操作后發(fā)現(xiàn)podspec文件的某個(gè)地方寫錯(cuò)了昼伴,想更新一下匾旭。對于這種情況,我們可能會(huì)先嘗試著在把podspec文件push一次亩码。但是如果你的代碼版本號(hào)沒變(podspec里的version自然也沒變)就會(huì)提示push失敗季率,即使你更改了podspec的其他地方,pod也會(huì)認(rèn)為這兩個(gè)文件是同一個(gè)描沟。 我目前為止找不到trunk的相關(guān)update接口飒泻,所以只能順?biāo)浦郾薰猓略创a版本號(hào)(如:1.1.1->1.1.2),重新push version tag泞遗,然后再執(zhí)行pod trunk push操作惰许。