创建自己的Cocoapods

创建自己的pod的步骤

两种方法

方法1
1.根据原有的.podspec文件为模板,更改其中的信息

Pod::Spec.new do |s|
#代表你这个pod的名字
s.name             = "HelloWorldView"
#pod的版本号,在后期更新的时候这个也需要更新的
s.version          = "0.1.0"
#简要介绍,不能过短,不然会提示warning
s.summary          = "主要用于地图跳转到其他第三方地图逻辑的判断和跳转使用"
#也是简要介绍,但是不能比summary内容短,不然也是会出现warning。
s.description      = <<-DESC
主要用于地图跳转到其他第三方地图逻辑的判断和跳转使用.
                   DESC
#你推送的git地址首页
s.homepage         = "https://github.com/<GITHUB_USERNAME>/HelloWorldView"
#liscens,通常为‘MIT’,这里写在行内的license。
s.license          = { :type => 'DP license', :text => <<-LICENSE
Permission is hereby granted, for DPER only
    LICENSE
      }
#作者信息
  s.author           = { "peng.wang.sh" => "peng.wang.sh@dianping.com" }
  #上传到gitlab的地址,注意要用http开头而不是ssh的,不然会报warning
s.source           = { :git => "https://github.com/<GITHUB_USERNAME>/HelloWorldView", :tag => s.version.to_s }
#平台版本
s.platform     = :ios, '6.0'
#是否arc
s.requires_arc = true
#这个很重要,是你要独立成pod的文件,路径是相对路径
s.source_files = 'HelloWorldView/*'
#同样重要,是你pod中所依赖的东西,这里依赖的源在验证podspec是否正确的时候要指定source的url地址。例如:--sources=http://xxx --use-libraries
s.dependency 'AFNetworking', '~> 2.3'

end

方法2(通过CoCoapods生成podsepc文件)
在终端键入命令
pod create lib xxx
其中xxx是你要建立的pod的名字。
在自动创建一个Pod Lib的过程中会有一下几个提示:
1)Objective-C or Swift
你选择你创建pod的语言,无论你选择哪个语言版本Cocoapods都会讲你的library构建为一个framework
2)Making a Demo Application
选择yes,那么模板就会为你创建一个Xcode工程。如果你想使用pod try MyLib 测试一下你的这个工程或者说你想在你的这个lib中跑一个程序测试一下是否有效那么就选择yes。
3)Choosing a Test Framework
通常建议使用一个测试框架在里面。通常选择为Specta/Expecta/Kiwi.如果你不能决定选择哪个,那么就选择Specta/Expecta.
4)View-based Testing
使用一个基于Snapshot的测试是一个非常方便的能够测试你的views中不同的行为。官方建议使用FBSnapShotTestCase,如果你选择了Specta/Expecta,那么官方会自动包含一个响应的pod在里面在简化语法。
5)Prefixes for Objective-C
项目中的前缀信息,这个不用介绍了吧。
6)The Pod Lib Create Template
出现这一步后就说明自动创建结束,这时候运行pod install更新pod。但是建议加上参数--no-repo-update这样可以避免将所有的pod重新装一遍。

这种自动生成的项目结构如下:
Dictionary screenshot
从图中可以看出,自动生成了项目HelloWroldView.
$ cd Pods/Classes
进入classes文件夹下,发现一个名为’ReplaceMe.m’文件,这里就将你要独立成pods的能够独立编译过的文件放入这里。
文件HelloWorldView.podspec是自动生成的。文件内容如下:内容与第一种方法建立的.podspec基本相似。(若只想让系统自动生成一个.podspec文件,可运行命令$ pod spec create xxxx)

Pod::Spec.new do |s|
 s.name             = "HelloWorldView"
 s.version          = "0.1.0"
s.summary          = "A short description of HelloWorldView." 
s.description      = <<-DESC
                   DESC

s.homepage         = "https://github.com/<GITHUB_USERNAME>/HelloWorldView"
# s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license          = 'MIT'
s.author           = { "peng.wang.sh" => "peng.wang.sh@dianping.com" }
s.source           = { :git => "https://github.com/<GITHUB_USERNAME>/HelloWorldView.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 = {
'HelloWorldView' => ['Pod/Assets/*.png']
}

# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
end

验证
验证命令有两种:pod lib lintpod spec lint .二者区别为: pod lib lint 不会接入网络,而pod spect lint 将会检查podfile内部的repo以及相关的tag信息等。
本文例子中的Demo不需要联网,所以键入命令 $pod lib lint
出现下面结果就是验证通过了。
-> HelloWorldDemo (0.1.0)
HelloWorldDemo passed validation.
这就表示验证通过,若验证没有通过会有提示,error或者warning。想要查看详细的信息,在命令后加入参数’–verbose’可以查看详细的编译信息。
Demo测试
上面步骤完成后,我们进入项目Example文件,发现已经自动帮你生成了podfile文件。podfile文件内容如下:

1 source 'https://github.com/CocoaPods/Specs.git'
2 use_frameworks!
3 
4 target 'HelloWorldDemo_Example', :exclusive => true do
5   pod "HelloWorldDemo", :path => "../"
6 end
7 
8 target 'HelloWorldDemo_Tests', :exclusive => true do
9   pod "HelloWorldDemo", :path => "../"
10 
11 
12 end  

路径是相对路径,同样这里podspec路径是本地,所以用path,同样也可以指向github上的依赖。pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
再次运行pod命令:$ pod install --no-repo-verbose即可在项目中引用pod中的文件。若出现file not found 命令,clean一下,再编译就好了。

project dictionary
图为项目在Xcode中的结构。其中:
1.你可编辑podspec的元数据,改变README和podspect文件。
2.Demo库,如果你选择了no那不不会出现。
3.这是你之前选择测试的framework的一个测试用例。
4.这是一个本地的pod。
5.这一部分是项目建立的时候用的的框架啊,另外远程的pods什么一类。
development Pods
本地的pods与那些在CocoaPods中的通过远程链接的文件是不一样的,你对这里的文件做出更改会改变原有的文件内容。并且你的demo&test如果引入本地pod文件的方式应该为**#import

发布CocoaPod

原有方法:在github中fork一下CocoaPod项目,1.在目录CocoaPods/Specs中创建一个自己的spec目录比如Specs/HelloWorld/0.1.0然后将你的podspec文件拷贝进来即可。2.提交merge 请求(pull request),等呆一段时间审核后,就可以通过pod search xxx,搜索到你的pod了。然后就可以想别的pod那样用CocoaPods来管理了。

//podfile
platform : ios, '6.0'  
pod 'HelloWorldDemo'

运行命令
$ pod install

这种方法随着pod数量增加,对于spec维护人员变得十分复杂,甚至有些没有通过$ pod lint的spec也被提交进来。于是引入了CocoaPods Trunk服务。
CocoaPods Trunk服务
使用方法
$ pod trunk register wangpeng_usst2012@126.com 'Shawn ' --description='mac pro'
其中邮箱是你spec文件中的邮箱地址。命令后你的邮箱会收到一个验证。你可以使用命令 pod trunk me来查看有关于你注册后的详细信息。
发布和升级你的pod
$ pod trunk push NAME.podspec
push做了以下三件事
·连接你本地的podspec。
·lint成功后悔讲你的podspec推送到Trunk或者你死有的repo中。
·Trunk 将会发布一个关于你的podsepc 规范化的json描述。
Trunk也会给其他服务发送一个web链接来通知说一个新的Cocoapod出现了。例如发送给CocoaDocs.org或者@CocoaPodsFeed.
trunk加入其他开发者
作为podspec的拥有者,可以加其他的开发者进来。命令:
$ pod trunk add-owner developerName xx@xx.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值