CocoaPods制作
- 欢迎相同喜欢动效的工程师/UI设计师/产品添加我们
- iOS动效特攻队–>QQ群:547897182
- iOS动效特攻队–>熊熊:648070256
引言:
折腾了三四天,各种文章翻遍了,遇到各种坑。才创建好了自己的 
Pods。
本文仅仅说制作CocoaPods的过程。
其它的资料就不再反复阐述了。
准备工作:
必须了解的知识: 
1.podSpec 
2.podFile 
3.Spec Repo
建议安装的插件: 
cocoapods-xcode-plugin 
https://github.com/kattrali/cocoapods-xcode-plugin 
这个插件能够非常方便的编辑podFile和podSpec文件,推荐安装 
流程概括:
1,创建Pod项目 
2。提交项目至gitHub 
3。在项目中添加我们自己的代码 
4。配置podSpec 
5,本地验证podSpec是否合格 
6,配置gitHub相应版本号号 
7,创建本地Spec Repo 
8。向Spec Repo提交podSpec 
9,将本地podSpec提交至Pod Trunk 
10,新建其它项目。导入自己创建的pod看是否能正常使用 
11,完毕
開始制作Pod:
1.创建pod项目
首先找个地方放置,我直接放在桌面上了
cd ~/Desktop/通过命令创建项目(这个命令运行完之后会自己主动运行pod install命令)
# pod lib create 项目名称
pod lib create BearPodsTest运行这条命令后就開始从pod模板仓库中拖一个模板到本地。而且会问你5个问题。
以下是我的配置,能够參考一下
#选择编程语言
What language do you want to use?? [ ObjC / Swift ]
 > Objc
#是否导入demo
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
#须要哪种測试框架
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
#想了半天也不知道这个要怎么翻译,就选Yes了
Would you like to do view based testing?
[ Yes / No ]
 > Yes
#设置项目名的前缀
What is your class prefix?
 > Bear看到pods installed就表示本地创建项目成功了 
注意坑: 
创建成功后,项目里的文件夹是这种。里面能够看到xcodeproj和xcworkspace。
 
假设xcworkspace没有创建成功。而且在这里提示你podFile invalidate,或者说你的podFile有问题什么的。
什么都不用说了,卸载你的pod,又一次安装pod,重头来过吧。在这里被坑了太多次了。
2,提交项目至gitHub
由于cocoaPods是基于git仓库的,所以在这里我们要把项目提交到git仓库。怎样提交到git仓库在这里就不做讨论了。
注意: 
不要在仓库中创建README.md和LICENSE,由于此时我们的项目中已经有了这两项了。 
项目提交过后。线上仓库会有相同的文件 
3,在项目中添加我们自己的代码
打开xcworkspace项目。依照下图的路径,在里面添加我们自己的代码。加完之后记得push到git仓库上。
注意:以后每次在项目中添加或者删除文件时,都要运行pod install 或者 pod update操作。
4,配置podSpec
能够參考这篇文章“自己定义cocoapods库”:https://segmentfault.com/a/1190000003064573 
“使用CocoaPods开发并打包静态库”:http://www.cnblogs.com/brycezhang/p/4117180.html 
用插件打开podSpec文件,或者用命令行打开BearPodsTest.podspec文件。准备配置 
以下參数必须配置
s.name          #pod名称
s.version       #pod版本号号,自己定义,一般从0.0.1開始
s.summary       #pod简单介绍,必须自己填写
s.description   #pod描写叙述,必须自己填写而且不能和summary一样
s.homepage      #你的主页。没有的话能够用gitHub的个人主页
s.license       #license
s.author        #作者信息
s.source        #版本号地址和相关信息,一般就是你的git仓库地址,也能够配置版本号号,commit标示
s.platform      #支持的iOS系统版本号
s.requires_arc  #是否支持ARC
s.source_files  #文件路径。一般添加的路径位于Pod/Classes下,假设是须要其它路径的。根路径(root)要和Pod保持在同一层级,不然是无法找到路径的。假设没有特殊要求的话这个就不用改。
s.dependency 'AFNetWorking'
s.dependency 'MJExtension' #依赖其它POD仓库#
# Be sure to run `pod lib lint BearPodsTest.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = "BearPodsTest"
  s.version          = "0.0.1"
  s.summary          = "BearSkill contain some methods used frequently in project."
# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it?
What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!
  s.description      = <<-DESC
BearSkill contain some methods used frequently in project. And many other methods about layout.
                       DESC
  s.homepage         = "https://github.com/BearRan/BearPodsTest"
  # s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
  s.license          = 'MIT'
  s.author           = { "Bear" => "648070256@qq.com" }
  s.source           = { :git => "https://github.com/BearRan/BearPodsTest.git", :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
  s.platform     = :ios, '7.0'
  s.requires_arc = true
  s.source_files = 'Pod/Classes/**/*'
  s.resource_bundles = {
    'BearPodsTest' => ['Pod/Assets/*.png']
  }
  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end5,本地验证podSpec是否合格
运行pod lib lint来验证刚才配置的podSpec是否合格可用 
 
那个unable大家不用管。。。
看到BearPodsTest passed validation.就表示podSpec本地验证通过了。
6,配置gitHub相应版本号号
刚才在配置podSpec的时候我设置了s.version          = "0.0.1",版本号号我设置为0.0.1,如今我要在github上也设置相同的版本号号,不然待会线上验证和查询的时候pod无法找到相应版本号号的项目。
git tag -m "first release" "0.0.1"
git push --tags 
在githHub上能看到版本号号设置成功了
7,创建本地Spec Repo
运行命令
#pod repo add pod名称 gitHub仓库地址
pod repo add BearPodsTest https://github.com/BearRan/BearSkill.git运行完之后在~/.cocoapods/repos/以下会看到我们自己的repo 
8,向Spec Repo提交podSpec
运行命令
#pod repo push Pod名称 当前文件夹下的.podSpec文件
pod repo push BearPodsTest BearPodsTest.podspec  
仍然忽略我的unable。。。 
看到这种界面就表示验证而且提交成功了。
9,将本地podSpec提交至Pod Trunk
运行命令
#pod trunk push 当前文件夹下的.podSpec文件
pod trunk push BearPodsTest.podspec第一次提交会提示让你输入gitHub的账号password,按提示的输入即可。 
 
这种界面出来就表示成功了。
搜索来看下
pod search BearPodsTest命令行能搜索到了,过一会就能在cocoaPods主页上搜索到你的pod了。 
10,新建其它项目,导入自己创建的pod看是否能正常使用
新建一个项目。步骤省略。和平时导入pod一样。
最后看下截图。
 
如今能够在其它项目中引入自己的pod了。
11。完毕
是不是非常happy啊?哇咔咔!
!!
假设在做的过程中遇到问题能够私聊我。QQ:648070256,能帮的一定帮。
最后来贴一下我在制作过程中要用到的各种文章和资料链接。
1,CocoaPods具体解释之—-制作篇(这篇文章非常重要。。。
基本就是依据这个来配置的) 
http://my.oschina.net/u/727843/blog/392784#OSC_h2_1 
2,使用CocoaPods开发并打包静态库 
http://www.cocoachina.com/ios/20141124/10297.html 
3。学习使用CocoaPods后涨的姿势(一些关于cocoaPod的方法,配置环境的时候建议阅读,还有cocoaPod的一些技巧) 
http://www.tuicool.com/articles/iYnuum6 
4,使用Cocoapods创建私有podspec(文章最后还有删除Spec Repo的方法,推了非常多測试的pod的能够看看) 
http://www.cocoachina.com/ios/20150228/11206.html 
5,CocoaPods之—-制作篇(还是制作的,基本相同。还是贴一下吧) 
http://blog.csdn.net/bluefish89/article/details/48030941 
6,Cocoapods 更新版本号失败。提示:“Errno::EACCES” 
http://www.jianshu.com/p/7ed7bd0e7e9a 
7,CocoaPods具体解释之—-制作篇 
http://blog.csdn.net/wzzvictory/article/details/20067595 
8。 CocoaPods 手把手五分钟教你制作自己的podspec文件(须要手动配置podSpec的能够看一下,只是一般用不到) 
http://iiiyu.com/2013/12/19/learning-ios-notes-thirty-one/ 
9,cocoapods的创建和使用 
http://jingyan.baidu.com/article/c33e3f488a7b24ea15cbb50c.html 
10,怎样编写一个CocoaPods的spec文件 
http://ishalou.com/blog/2012/10/16/how-to-create-a-cocoapods-spec-file/ 
11,cocoapods的使用,解决pod search出来的仓库版本号低于github仓库版本号的方法 
http://my.oschina.net/u/1432769/blog/384398
以下是官方文档 
12,Using Pod Lib Create 
https://guides.cocoapods.org/making/using-pod-lib-create 
13,Making CocoaPods 
https://guides.cocoapods.org/making/index.html 
14。Creating Your First CocoaPod 
http://code.tutsplus.com/tutorials/creating-your-first-cocoapod–cms-24332#disqus_thread
CocoaPods制作的更多相关文章
- [CocoaPods]制作CocoaPod
		创建自己的CocoaPod非常简单.如果你已经有一个单独的组件,那么你就是最重要的.本指南概述了整个过程,本节中的其他指南更适合更高级用户. 我们建议让CocoaPods在这里努力工作.Running ... 
- CocoaPods: 制作cocoapods国内镜像
		制作cocoapods国内镜像∞ March 15, 2014 Tags:cocoapods 国内访问cocoapods spec repo速度非常慢,网络不好的话做一次pod update要等半个小 ... 
- 制作自己cocoapods库
		https://www.cnblogs.com/czc-wjm/p/5958103.html 今天来讲一下cocoapods制作,网上教程很多,就不再讲理论,直接操作: 1.创建仓库: 2.将仓库克隆 ... 
- 利用Cocoapods、SVN 创建私有库实现方案(yoowei)
		由于项目年后要进行组件化,考虑到如果公司内部实现一些私有的组件,不对外公开,而又想在不同项目中使用,该怎么办呢? 使用Cocoapods制作私有库就完美的解决了这个问题.下图就是使用私有库带给我们的好 ... 
- 利用Cocoapods创建基于SVN的私有库podspec
		由于项目年后要进行组件化,考虑到公司内部实现的一些私有组件,不对外公开,而又想在不同项目中使用,该怎么办呢?由于cocoapods有了强大的功能,可以自己创建podspec,更可以设置私有的库.那么利 ... 
- (转)CocoaPods
		本文转自http://nshipster.cn/cocoapods/ 文明是建立在道路,桥梁,运河,下水道,管线,电线和光纤这些基础设施之上的.只要设计和施工得当,它们可以帮助社会成倍的发展. 唯一的 ... 
- iOS 组件化开发之使用CocoaPod制作自己的远程私有库
		随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ... 
- Mac使用最多的软件,整理集合
		软件资源 #[PDF移除密码]Cisdem PDFPasswordRemover 3.0.0 [TNT] #Alfred_3.1.1_737 #fwmso2016vlu2.0 #iHosts #Omn ... 
- iOS组件化开发入门 —— 提交自己的私有库
		前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ... 
随机推荐
- 我照着NancyFx官网的demo来做为什么会有错误呢????
			我照着NancyFx官网的demo来做为什么会有错误呢???? >> csharp这个答案描述的挺清楚的:http://www.goodpm.net/postreply/csharp/10 ... 
- 学以敩(xiao,效)为敎,以见为觉。醒悟、明白。
			学以敩(xiao,效)为敎,以见为觉.醒悟.明白 上半部分中间的爻是算筹,在古时被用来记数和计算:两边是手,既表示手把手传授,双手也表恭敬与专注:中间是一座房子,表示教学和学习的地方,这个地方不用豪华 ... 
- jquery validate验证规则重用
			当多个控件验证规则相同时,如何避免冗余代码并应用相同规则呢? [1st way. addMethod+addClassRules] 场景:维护学生档案时需要维护父母.监护人.紧急联系人的身份证号码,此 ... 
- CF981C(菊花图)
			题目描述 RAMESS知道很多关于树的问题(无循环的无向连通图)! 他创建了一个新的有用的树的划分,但他不知道如何构造它,所以他请求你的帮助! 划分是从树上的边中分裂出一些简单的路径,使得每个两条路径 ... 
- 新人   记录VUE中分页实现
			关于函数传值 this.getPurchaseHistoryData(index, num,timeType);第一位是显示的页数,第二是控制首页4上一页-1下一页是2末页是5 第三是是对昨天是1,今 ... 
- python 命令行下的命令参数
			本文所介绍的命令或许是在依赖包里使用的,说白了,我不太清除,由于刚开始学习,所以对知识了解不清楚,按说学习本应该学以解惑,可是为了把知识面展开的太广而影响主要知识的学习,我决定抓住主要矛盾,把有些困惑 ... 
- 【Educational Codeforces Round 37 F】SUM and REPLACE
			[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 那个D函数它的下降速度是很快的. 也就是说到最后他会很快的变成2或者1 而D(2)==2,D(1)=1 也就是说,几次操作过后很多数 ... 
- 洛谷 P1703 那个什么密码2
			P1703 那个什么密码2 题目背景 https://www.luogu.org/problem/show?pid=1079 题目描述 与原题一模一样.具体不同请见输入格式 输入输出格式 输入格式: ... 
- 国庆 day 6 下午
			1.数组异或 (xorarray.pas/c/cpp) (xorarray.in/out) 时间限制:2s/空间限制:256M [题目描述] xor——异或,和 and 与or 一样,是一种重要的逻辑 ... 
- 【AHOI2013】【BZOJ3238】差异
			Description Input 一行,一个字符串S Output 一行.一个整数.表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N< ... 
