CocoaPods建立私有pods

因爲項目需求,須要把項目的不一樣模塊拆分出來即 組件化 ,一開始想作成多target模式,後來換成私有podshtml

CocoaPods的安裝和使用,網上不少,自行搜索便可。ios

據說能夠基於svn建立pod私有庫文章點這裏),但我斷斷續續的折騰了兩三天沒成功,實在不想搞了,只能老老實實搞git的。有誰弄成功了但願不吝賜教。git

 

cd到須要作庫的工程目錄下 建立一個podspec文件
pod spec create podName (如:pod spec create testPods,會在當前目錄生成 testPods.podspec)
修改testPods.podspec文件,修改.podspec文件時可參考這裏
能夠用vim修改 也可使用文本編譯器進行修改,(注意:使用文本編輯器修改時注意標點符號,要保證的半角符號,文本編輯器有時會自動改爲全角的)github

在使用時須要注意的是:Podfile文件裏面的寫法區別於公有庫  示例:pod 'Utility',:git=>"http://xxxxx.git"(替換爲真實的git地址)vim

 

更具體的請參考:http://www.cnblogs.com/superhappy/p/3468377.htmlapp

        http://www.cocoachina.com/ios/20150228/11206.html編輯器

我遇到了這個錯誤:Unable to run command 'StripNIB AQPhotoPickerView.nib' - this target might include its own productide

是由於我指定的文件夾裏有xib文件,xib文件算是資源文件的,須要另外添加s.resource引入svn

修正前組件化

  s.source_files = "pod/classes/**/*"

修正後

s.source_files = "pod/classes/**/*.{h,m}" s.resource = "pod/classes/TestViewController.xib"

2016-07-14 更新

如何在私有庫裏引用私有庫(基於CocoaPods v1.0.0)

  通常,在組件化之路上,不可避免的會用到 私有庫中引用私有庫,即 s.dependency "私有庫"。網上的資料我沒有找到完整的、可行的流程,我斷斷續續的折騰了三、4天才終於解決了這個問題,特來次記錄下:

一、首先要簡單說下pod install 的流程

  終端運行 pod install後,會默認從github上搜索公開庫的,所以,咱們須要在PodFile上指明咱們的私有庫的地址,在PodFile 的頂上添加以下代碼:

  source 'https://github.com/CocoaPods/Specs.git' # 這個是github上公有庫的地址,沒有這個,pod就不會去公有庫查詢,就不能下載公有庫的東西

  source '私有庫地址',能夠放多個source

二、前面的步驟基本一致:

  1)建立遠程倉庫

  2)建立並編輯 .podspec 文件

  3)pod repo add #repo名# #遠程倉庫地址,如:http://git.xxxxx/xx/test.git#

  4)驗證 pod lib lint

三、驗證經過

  pod spec lint --sources='http://git.#私有倉庫地址#,https://github.com/CocoaPods/Specs'

  核心就在這了,否則會報找不到repo的錯誤。

 

四、打tag

  cd到項目文件夾  

      $ git tag #版本號# 

      $ git push --tags

五、推送到遠端倉庫(記住:在推送以前要先打tag,否則會出錯)

  pod repo push #本地Repo名字# #.podspec名#   如:pod repo push test test.podspec

  打開遠端倉庫,會看到剛纔打的tag

六、私有庫更新後,要重複四、5步

 

2016-09-09 更新

 這裏須要補充說明一點,

  私有庫有引用私有庫的狀況,在驗證已經推送podspec的時候都須要加上全部的資源地址,否則,pod會默認從cocoapods官方查詢的。

  如,私有庫a要引用私有庫b,在驗證與推送私有庫a的時候,要加上私有庫b的遠程倉庫地址,以下

  注意:要在pod lib lint 或者 pod spec lint 以及 pod repo push ....時候加上被引用的私有庫地址  

 pod spec lint --sources='#私有庫b的遠程倉庫地址(如:http://xxxxxx.git)#,https://github.com/CocoaPods/Specs'
 pod repo push #本地Repo名字# #.podspec名# --sources='[私有庫b的遠程倉庫地址(如:http://xxxxxx.git)],https://github.com/CocoaPods/Specs'

#demo:
 pod spec lint --sources='http://xxxxxx/iOSRepos.git,https://github.com/CocoaPods/Specs'

 pod repo push iOSTest iOSTest.podspec --sources='http://git.yinqiyun.com/xfx/iOSRepos.git,https://github.com/CocoaPods/Specs'

 

  有多少個私有庫就加多少個地址,用 半角「,」隔開

 

2016-07-15 更新

統一管理私有庫版本

  前面咱們拆分了一堆組件,地址都是獨立的太過度散很差管理,所以須要創建一個統一的repo來管理這些組件。

  一、在遠端建立私有repo,如:http://git.xxxx.com/xfx/iOSRepo.git

  二、添加私有repo到CocoaPods

    套用原文:      

$ pod repo add REPO_NAME SOURCE_URL
注意:在你建立本地pods庫的時候,須要檢查你推送到源地址的權限。

你可使用下面兩條指令去檢查你的安裝是否完成:

$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .

    如:pod repo add iOSRepo  http://git.xxxx.com/xfx/iOSRepo.git

    注:我在用 pod repolint 檢查時,會在後面無限打出 .......... 字符,不知啥緣由,不過沒有影響。

  三、添加組件的 .podspec到剛建立的repo

    這一步參考前面2016-07-14更新的 五、推送到遠端倉庫,不過repo名要改爲剛纔建立的repo名,即 iOSRepo

  詳情請參考這裏。

  

2016-09-12 更新

  報錯 ··· error: include of non-modular header inside framework module ··· [-Werror,-Wnon-modular-include-in-framework-module]

  解決辦法:在pod lib lint 或者 pod spec lint 以及 pod repo push ....時候加上   --use-libraries

    pod lib lint --use-libraries
    #或者
    pod spec lint --use-libraries

    #固然,在提交的時候也要加上
    pod repo push <repoName> <podspec> --use-libraries

   參考:http://stackoverflow.com/questions/29132496/cocoapod-spec-wont-lint-with-0-36

 

2016-09-22 更新

  引用本身的或者第三方的framework或者.a靜態庫

  加上如下代碼便可:

  s.ios.vendored_frameworks = "xxx/**/*.framework"
  s.ios.vendored_libraries = "xxx/**/*.a"

 

 

 

僅記錄。

 

參考:

一、http://www.cnblogs.com/superhappy/p/3468377.html

二、http://www.cocoachina.com/ios/20150228/11206.html

三、http://www.jianshu.com/p/ddc2490bff9f/comments/3113292#comment-3113292

四、http://blog.csdn.net/andanlan/article/details/51713595

相關文章
相關標籤/搜索