CocoaPods之----制作篇

版权声明:未经博主同意不得转载 https://blog.csdn.net/bluefish89/article/details/48030941

如果我们已经做好了一个不错的库,并上传到github,这时,你会想让这个库支持pod使用,下面就来介绍如何制作自己的pod。

1.cd进入本地某个目录,从github上clone下项目,已经有项目的忽略这一步。
2.cd进入项目目录,这里我用我的开源项目为Test来说,进去后输入

git tag 'v1.0.0'

git push --tags

git push origin master

给项目加入一个tag。以便pod能自动识别,注意这里版本号加“v”,不然后面会有坑。

3.生成.podspec文件,这个是pod的描述文件,很重要

pod spec create https://github.com/lupeihong/Test

执行后会看到当前目录下会出现一个Test.podspec文件,用编辑器打开,会有很多注释,根据自己的项目修改,得到类似下面的内容:

Pod::Spec.new do |s|
  s.name         = "Test"
  s.version      = "1.0.0"
  s.summary      = "空视图处理"
  s.description  = "A UIView category for showing empty datasets whenever the view has no content to display."
  s.homepage     = "https://github.com/lupeihong/Test"
  s.license      = { :type => "MIT", :file => "LICENSE" }
  s.author       = { "lupeihong" => "123456@qq.com" }
  s.platform     = :ios, "6.0"

  #  When using multiple platforms
  # s.ios.deployment_target = "5.0"
  # s.osx.deployment_target = "10.7"


  s.source       = { :git => "https://github.com/lupeihong/Test.git", :tag => "v#{s.version}" }

  s.source_files  = "Classes", "Test/UIView+Test.{h,m}"

  s.framework  = "UIKit"
  # s.frameworks = "SomeFramework", "AnotherFramework"

  # s.library   = "iconv"
  # s.libraries = "iconv", "xml2"


  s.requires_arc = true

  # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
  # s.dependency "JSONKit", "~> 1.4"

end

最重要的是s.source_files这个。你要把你要包含的文件路径找对了。 然后用通配符匹配好了。当然其他项,你看看注释啥的 选择性的填一些。
建议直接拿一些成熟的开源库的podspec改就行,生成的模板里有很多冗余的属性。

4.接着 把修改好的文件push到github上去

git add Test.podspec

git commit -am "add Test.podspec file”

git push -u origin master

最后,在你项目的Podfile里面加入这个第三方库的地址。

pod 'Test', :git => 'https://github.com/lupeihong/Test.git'

然后pod update,就能通过pod来使用你自己库。


5.发现没有,以上的方法,使用pod search 是搜不到你的库的,因为这只是你私有的库而已。在你本地,前往~/.cocoapods/repos/master/Specs,你会看到cocoapod所有公有的开源库配置,这个通过cocoapod官方在github的specs来管理,地址为https://github.com/CocoaPods/Specs 。说到这里,你会想把这个库fork分支下来,clone到你本地,把自己的Test.podspec加入,然后add、commit、 push,最后在github上pull request来和官方的主分支合并,可是你会发现请求马上被自动关闭。WHY!!!!!!
虽然一开始使用GitHub Pull Requests来整理所有公共pods效果很好。但是,随着Pod数量的增加,这个工作对于spec维护人员Keith Smiley来说变得十分繁杂。甚至一些没有通过$ pod lint的spec也被提交上来,造成repo无法build。
CocoaPods 0.33中加入了Trunk服务。CocoaPods Trunk服务的引入,解决了很多类似的问题。CocoaPods作为一个集中式的服务,使得分析和统计平台数据变得十分方便。下面来说说怎么分布CocoaPod。

6.要想使用Trunk服务,首先你需要注册自己的电脑。这很简单,只要你指明你的邮箱地址(spec文件中的)和名称即可。

pod trunk register 123456@qq.com 'lupeihong' --description='macbook air'

后面可以加上 –verbose可选参数,为了便于输出注册过程中的调试信息
然后顺利的话你会收到一份邮件,需要点击验证。

可以使用

pod trunk me

查看自己的注册信息

ps:当然,如果你的pod是由多人维护的,你也可以添加其他维护者

pod trunk add-owner ARAnalytics kyle@cocoapods.org

6.上面的工作完成之后,我们就可以开始 trunk push 了提交我们的podspec文件。
pod trunk push 命令会首先验证你本地的podspec文件(是否有错误),之后会上传spec文件到trunk,最后会将你上传的podspec文件转换为需要的json文件
第一步验证podspec文件也可以自己去做

pod spec lint Test.podspec

如果验证成功的话会显示

Test.podspec passed validation.

但你收到类似消息,如:

[!] /usr/bin/git clone https://github.com/lupeihong/Test.git /var/folders/z2/h6c1f1hj72b6p5y3dhgjd27c0000gn/T/d20150827-4039-1ujw0u9 --single-branch --depth 1 --branch v1.0.0

Cloning into '/var/folders/z2/h6c1f1hj72b6p5y3dhgjd27c0000gn/T/d20150827-4039-1ujw0u9'...

warning: Could not find remote branch v1.0.0 to clone.

fatal: Remote branch v1.0.0 not found in upstream origin

Unexpected end of command stream

why!!!再次崩溃。。cao

还记得你之前 add tag的时候吗,如果你写的是git tag '1.0.0' 这里就会报错,无语,一定记得要加“v”啊!

最后,输入

pod trunk push Test.podspec

等待部署成功。

上面的代码做了三件事:
*验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod spec lint”命令进行验证。
*上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁琐操作)
*将你上传的podspec文件转成json格式文件

执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,一般需要一到两个工作日可以审核结束。这种心情有点像提交App给Apple审核,哈哈。

7.查看我们自己创建的pods依赖库
如果收到了cocoapods官方发过来的审核通过邮件后,你很急着用pod search命名肯定会失望,没收到,还记得我们本地的~/.cocoapods/repos/master/Specs吗,还没跟官方的github上的Specs同步,
执行一次

pod setup

或者

pod update

来更新本地缓存的Spec库,再去search就能看到了

就能够用

pod 'Test', '~> 1.0.0' 

这样去安装自己pod依赖库了
而.podspec文件也可以作为管理内部代码的利器

pod 'Z', :path => 'path/to/directory/with/podspec'

参考资料://
http://www.360doc.com/content/14/0309/10/11029609_358969425.shtml
http://www.cocoachina.com/industry/20140623/8917.html
http://www.tuicool.com/articles/6FF7fi

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页