CocoaPods創建私有pods


由於項目需求,需要把項目的不同模塊拆分出來即 組件化 ,一開始想做成多target模式,后來換成私有pods

CocoaPods的安裝和使用,網上很多,自行搜索即可。

聽說可以基於svn創建pod私有庫文章點這里),但我斷斷續續的折騰了兩三天沒成功,實在不想搞了,只能老老實實搞git的。有誰弄成功了希望不吝賜教。

 

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

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

 

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

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

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

是因為我指定的文件夾里有xib文件,xib文件算是資源文件的,需要另外添加s.resource引入

修正前

  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 "私有庫"。網上的資料我沒有找到完整的、可行的流程,我斷斷續續的折騰了3、4天才終於解決了這個問題,特來次記錄下:

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

  終端運行 pod install后,會默認從github上搜索公開庫的,因此,我們需要在PodFile上指明我們的私有庫的地址,在PodFile 的頂上添加如下代碼:

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

  source '私有庫地址',可以放多個source

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

  1)創建遠程倉庫

  2)創建並編輯 .podspec 文件

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

  4)驗證 pod lib lint

3、驗證通過

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

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

 

4、打tag

  cd到項目文件夾  

      $ git tag #版本號# 

      $ git push --tags

5、推送到遠端倉庫(記住:在推送之前要先打tag,不然會出錯)

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

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

6、私有庫更新后,要重復4、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來管理這些組件。

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

  2、添加私有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 檢查時,會在后面無限打出 .......... 字符,不知啥原因,不過沒有影響。

  3、添加組件的 .podspec到剛創建的repo

    這一步參考前面2016-07-14更新的 5、推送到遠端倉庫,不過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"

 

 

 

僅記錄。

 

參考:

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

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM