由于项目需求,需要把项目的不同模块拆分出来即 组件化 ,一开始想做成多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

CocoaPods创建私有pods的更多相关文章

  1. 【转】使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  2. 使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  3. CocoaPods 创建私有仓库

    这里有个坑首先需要注意,创建私有cocoapods仓库需要两个git仓库,即代码仓库,Specs文件仓库. 一.创建私有库 1.创建自己源码仓库,假设是A.git; 2.对A仓库: git add . ...

  4. iOS代码组件化--利用cocoaPods创建私有库

    如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的 ...

  5. CocoaPods学习系列3——创建和使用私有Pods

    前一篇记录了使自己的项目支持CocoaPods管理的过程,核心的步骤就是podspec的配置和提交.这个文件,记录了类库的详细信息,用于对类库的集成. 需要注意的一点,上一篇创建的podspec文件, ...

  6. 利用Cocoapods、SVN 创建私有库实现方案(yoowei)

    由于项目年后要进行组件化,考虑到如果公司内部实现一些私有的组件,不对外公开,而又想在不同项目中使用,该怎么办呢? 使用Cocoapods制作私有库就完美的解决了这个问题.下图就是使用私有库带给我们的好 ...

  7. 利用cocoapods创建基于git的私有库

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  8. 利用cocoapods创建基于git的私有库Spec Repo

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  9. 利用Cocoapods创建基于SVN的私有库podspec

    由于项目年后要进行组件化,考虑到公司内部实现的一些私有组件,不对外公开,而又想在不同项目中使用,该怎么办呢?由于cocoapods有了强大的功能,可以自己创建podspec,更可以设置私有的库.那么利 ...

随机推荐

  1. VM virtuaBox异常关机启动不了的解决方案

    事件回放 我的物理机是win7,上面装了一个VM virtualBox,用来装Centos,有天物理机非正常关闭,导致VM virtuaBox异常关机启动不了,如下: 确实找不到这个vm_liang. ...

  2. Lightoj 题目1422 - Halloween Costumes(区间DP)

    1422 - Halloween Costumes   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...

  3. iOS 7.1耗电严重解决办法

    自从iOS 7.1正式版发布以来,三天后的升级率就已经达到17.9%,预计一周后升级率能突破40%.但是也有不少用户在苹果官方支持论坛上抱怨iOS 7.1系统耗电严重. 名为PJS2006的iPhon ...

  4. 横向滑动的GridView

    思路: GridView行数设置为一行,外面套一个HorizontalScrollView,代码中设置GridView宽度 xml代码 <HorizontalScrollView android ...

  5. 【python】3.x,string与bytes的区别(文本,二进制数据)

    Python 3对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示, 二进制数据则由bytes类型表示. 不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也 ...

  6. 基于css3的轮播效果

    花了一上午来调整页面在ie10上的显示问题,sass编译生成的css文件在ie内核下一直不能正确加载,果然兼容性的问题还需要好好研究.转入正题,用css3实现轮播效果主要是基于css3的framewo ...

  7. 球形环境映射之angular与latlong格式互换

    这么做只是纯好奇,因为这种格式互换在实际中是没有意义的,下面映射方式互换的贴图说明了一切. 刚开始打算使用matlab进行贴图映射方式的转换,但许久不用很是生疏,而且生成图片要考虑很多事情,尤其是生成 ...

  8. win7 64位安装pygame

    需要的工具包 Python安装包 Pip安装包(版本无要求) Pygame安装包(版本需要与python匹配) http://jingyan.baidu.com/article/425e69e6ed3 ...

  9. 【css】a标签的用法

    <a>标签属性display的不同设置达到目的 display:block和display:inline; display:block 可以使得<a>标签设置宽高.边线.mar ...

  10. DBN 入门学习资料整理

    建议按序阅读 1.Deep Learning 概述 Deep Learning(深度学习)学习笔记整理系列 : http://blog.csdn.net/zouxy09/article/details ...