iOS开发所用工具及库首页投稿(暂停使用,暂停投稿)程序员

使自己的开源代码支持Cocoapods

2016-08-18  本文已影响841人  o翻滚的牛宝宝o
Cocoapods!

说起Cocoapods,让我想起了在大学时手动拖第三方代码包的灰色经历。。。当时想玩玩百度地图和高德地图的api,各种link系统包,修改Build Settings里的参数,最后运行不起来还一行一行和官方文档里对。。特别是百度和高德地图都拖进一个项目中时各种问题真的泪崩。。自从使用了Cocoapods,PodFile里一行代码就解决了这些烦恼。

不过这里我并不想讲怎么装Cocoapods和怎么使用,因为对于iOS App的开发,几乎都采用了Cocoapods吧,而且网上教材很多,查找也很方便。这里我只想讲一下怎么在Cocoapods发布自己的代码。(其实在第一次使用Cocoapods我就有强烈的愿望这么做,一直拖到现在。。)

使开源库支持pod


我们先看一下Pod版本号:

pod --version
1.0.1

这里主要介绍下流程。其实使自己的开源库支持Pod的过程并不复杂,主要是在自己的git库里创建一个.Podspec文件,里面配置一些参数,然后推送到远程的cocoapods,这样其他人就能用你的开源库拉。一般都使用gitHub作为自己的git库,我也不例外,这里我选用我写的第三方库NMAutoHeightTableCell来测试。地址

创建.Podspec文件

SourseTree 项目界面
    $ cd /Users/nuomi/NMKit/NMAutoHeightTableCell/lib 
    $ pod spec create NMAutoHeightTableCell
    
    Specification created at NMAutoHeightTableCell.podspec

于是我们的项目文件下就生成了NMAutoHeightTableCell.podspec文件。用文本编辑器或者vi开这个文件,去掉注释,大概就剩下这么几个部分。

Pod::Spec.new do |s|

 s.name         = "NMAutoHeightTableCell"
 s.version      = "0.0.1"
 s.summary      = "A short description of NMAutoHeightTableCell."
 s.description  = <<-DESC
               DESC

 s.homepage     = "http://EXAMPLE/NMAutoHeightTableCell"

 s.license      = "MIT"

 s.author             = { "nuomi" => "xsz88287703@126.com" }

 s.platform     = :ios, "7.0"

 s.source       = { :git => "http://EXAMPLE/NMAutoHeightTableCell.git", :tag => "#{s.version}" }

 s.source_files  = "Classes", "Classes/**/*.{h,m}"
 s.exclude_files = "Classes/Exclude"
 s.requires_arc = true
 s.dependency "Masonry", "~> 0.6"
end

如果我们的开源库依赖系统库怎么办?

# s.framework = 'SomeFramework'// 去掉#,设置依赖的系统库名称
# s.frameworks = 'SomeFramework', 'AnotherFramework'//设置多个系统库名称

# s.library = 'iconv'// 设置只依赖一个系统的library
# s.libraries = 'iconv', 'xml2' // 设置依赖多个系统的library

# s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }// 这里是工程配置,这样使用者就不需要手动处理,由pod自动处理了。

如果我们的开源库依赖系统库怎么办?

s.dependency 'JSONKit', '~> 1.4'//设置我们的开源库依赖哪些第三方库和依赖的版本号。

我的例子:

Pod::Spec.new do |s|


 s.name         = "NMAutoHeightTableCell"
  s.version      = "0.0.1"
 s.summary      = "一个可以使用Autolayout实现自动计算Cell高度的扩展库"

 s.description  = <<-DESC
               一个可以使用Autolayout实现自动计算Cell高度的扩展库
               DESC

  s.homepage     = "https://github.com/NBaby/NMKit/tree/master/NMAutoHeightTableCell"

  s.license      = "MIT"

 s.author             = { "nuomi" => "xsz88287703@126.com" }

 # s.platform     = :ios
 s.platform     = :ios, "7.0"
  s.source       = { :git => "https://github.com/NBaby/NMKit.git", :tag => "0.0.1" }
  s.source_files  = "NMAutoHeightTableCell/lib", "*.{h,m}"

 s.requires_arc = true

end

好了,如果这里都填好了,可以先测一下本地的.Podspec文件是否填对。

检验.Podspec文件

cd 到本地开源库项目的.Podspec文件目录下,使用pod lib lint命令来尝试编译,如果要忽略警告,可以在后面添上--allow-warnings,如果成功会显示passed validation

编译成功

如果有错也没事,根据错误提示慢慢改.Podspec文件,好了再编译,直到成功为止。

上传本地文件到gitHub

还记得我们.Podspec文件文件里用了:tag => "0.0.1"这句话么,这里就要用到了。首先用SourceTree切出一个分支,名字命名为“0.0.1”,这里一定要对上,否则后面会找不到。

tag 0.0.1

然后就可以推送的gitHub上去了。

推送到gitHub

这里用命令行完成操作也是可以的。

推送到远程的cocoapods

回到终端,通过 pod trunk push 库名.podspec --allow-warnings来推送到远程的cocoapods.
记得第一次推送到cocoapods会让你填一个邮箱,然后往你邮箱你发一封验证邮件。由于当时没截图。。这里就放上验证邮件的截图吧。。

验证邮件

一切顺利的话就能用Pod Search搜索你的库拉。

Paste_Image.png

咦,小伙伴的电脑搜不到怎么办。。试着pod repo update一下就ok~

总结


第一次尝试肯定会遇到横多问题,其实不用担心,将错误信息在网上搜一下就会出来很多解决方法。有些错误写得很直白,稍微看下也就懂了(像我的路径没对上就提示找不到xxx文件)。

这次尝试也算是实现了一年前的心愿,也算是一种进步吧~

我是翻滚的牛宝宝,欢迎大家评论交流~

上一篇 下一篇

猜你喜欢

热点阅读