使用CocoaPods管理iOS库---制作pod篇

第一步:在GitHub上新建一个仓库

第二步:clone项目到本地,并创建.podspec文件

具体clone与创建.podspec文件的命令如下:

//2.1(具体路径,看你自己放置)cd /Users/peijianbo/Documents/MTTest //2.2 
git clone https://github.com/chinesemanbobo/PPKit1.git 
//2.3 (切换到开源库名相同的目录)cd /Users/peijianbo/Documents/MTTest/PPKit1//2.4 (很重要的第一步,create后面必须是开源库名,此处是PPKit1)pod spec create PPKit1

至此,会出现Specification created at PPKit1.podspec。Good!

第三步:配置.podspec,尤其是里面的.source_files文件要注意

注意:此处开始,我们再回到PPKit。(如果你自己的库,请替换PPKit为你的库名来阅读)。

3.1 打开PPKit.podspec文件(我用的是Sublime Text,提示、关键字高亮处理的比较好),我觉得很有必要读读开头的3行注释,真的是很有必要。(我自己就是因为后来才读这3行注释,中间浪费了很多时间)。下面,我简单翻译下:

##  Be sure to run `pod spec lint PPKit.podspec' to ensure this is a#  valid spec and to remove all comments including this before submitting the spec.##  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html#  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/#
1. 在你提交.podspec文件到CocoaPods前,务必要在命令行运行 pod spec lint PPKit.podspec 来确保.podspec有效,并且删除所有的注释,包括这句(Be sure ... submitting the spec.)。
2. 你可以在cocoapods.org看到更多关于podspec(pod规则)的属性的信息。
3. 你可以在GitHub上查看当前都有那些有效的、可以用的Pods.

上面第3条,我们可以点开看一看,保证你有收获,如下:

点开后,在This repository里输入AFNetworking,然后摁Enter键搜索,你会看到下图,先别惊奇(至于我再下面截图上说的,本地也有,就不上图了):

看到这,如果你的项目用到了CocoaPods,有没有一种“噢...,原来是这样的”的柳暗花明又一村的感觉,如果你有,你NB;如果没有,没有就算了,你更要认真看下去!反正我有。嘿嘿!

放大招的时候来了:CocoaPods说白了,就是帮我们管理第三方or自己的库;而它不过也是一个.xcodeproj工程。只不过,它是专门管理第三方or自己的库的工程,而它的工作原理就是:你把.podspec文件制作好,然后trunk push (后面后讲到)给它,它再把.podspec文件保存为.podspec.json文件放到GitHub,你需要的话,它通过这个.podspec.json把GitHub上对应的开源库的文件下载下来,放到你的工程里。至此,OK。

那就打开PPKit.podspec,删除里面所有的注释。然后修改,下面给出PPKit.podspec以便参考,注释我以及加进去(如果你发布的话,最好注释去掉,此处只是为了说明):

Pod::Spec.new do |s|

  #开源库的名字  s.name         = "PPKit"   
  #开源库当期版本
  s.version      = "0.0.6"   
  #开源库概述(打开GitHub能看到的描述)
  s.summary      = "开发中常用的自定义控件、开发经验、开发bug记录,常用宏、categories等封装,不再每个项目都手动配置,用Pod统一管理。"    
  #开源库描述 (这个描述会被用来生成开源库的标签和提高被搜到,必需写在中间一行,只要在中间一行,不需要考虑缩进)
  s.description  = <<-DESC
                   开发中经常从A项目copy一些代码(比如常用的宏、category等)到B项目,A更改了一个category,B又要改动;B更改了一个category,A也要改动,不方便同步,就容易出差错,所以,考虑用Pod来管理。
                   DESC

  #可以是开源库的GitHub地址,也可以是你自己的网址等  s.homepage     = "https://github.com/chinesemanbobo/PPKit"
  #我这里是参靠网上的一种写法,不会报警告,也可以直接 s.license = 'MIT'  s.license = { :type => 'MIT', :text => <<-LICENSE
         Copyright PPAbner 2016-2017
          LICENSE
      }
  #开源库作者  s.author             = { "chinesemanbobo" => "chinesemanbobo@163.com" }
  #开源库作者的社交链接(此处我放的是微博)  s.social_media_url   = "https://weibo.com/5366568018/profile?rightmod=1&wvr=6&mod=personnumber&is_all=1"

  #开源库支持的平台(暂时没考虑tvOS、OSX等)  s.platform     = :ios
  #开源库最低支持  s.ios.deployment_target = "8.0"

  #VIP 开源库GitHub的路径与tag值,GitHub路径后必须有.git,tag实际就是上面的版本  s.source       = { :git => "https://github.com/chinesemanbobo/PPKit.git", :tag => s.version }

  #VIP 开源库资源文件 (我自己总结:每个文件都要有自己的路径,尤其你想目录分的比较详细的话,更具体的说明,看图对比着再说)  s.source_files = 'PPKit/PPKit.h','PPKit/PPMacros.h'


  #子目录PPHelpers(2级),PPKit(1级),ss子目录可以随便写,但下面要对应  s.subspec 'PPHelpers' do |ss|
    #子目录PPRuntimeHelper.h和PPRuntimeHelper.m (3级)    ss.source_files = 'PPKit/PPHelpers/PPRuntimeHelper.{h,m}'
   
    end

  s.subspec 'PPCategories' do |ss|
    ss.subspec 'UI' do |ssui|
        ssui.subspec 'UIScreen' do |ssuiscreen|
              ssuiscreen.source_files = 'PPKit/PPCategories/UI/UIScreen/UIScreen+EasilySize.{h,m}'
             end
       end
    end

  #开源库头文件  s.public_header_files = 'PPKit/PPKit.h' 

  #开源库依赖库 
  # s.dependency "JSONKit", "~> 1.4"

  # 是否支持arc  s.requires_arc = trueend

3.2 .podspec里面的.source_files的常见语法

一个宗旨:库里面每个文件、资源都要有路径指向它。
"PPKit/*"  表示匹配所有PPKit目录下文件,不包含子目录的"PPKit/PPHelpers/*.{h,m}"  表示匹配PPHelpers所有以.h和.m结尾的文件"PPKit/**/*"  表示匹配所有文件(主目录和子目录,其中**相当于省略中间层级)
具体的语法示例及截图,见文章最后面(参考链接之前)。

第四步:更新GitHub

依次执行下面命令:

$ git add -A && git commit -m "你的更新说明" //tag值要和.podspce里的version相同,并且必须设置$ git tag '1.0.0'   $ git push --tags  $ git push origin master

第五步:验证.podspec是否有效

pod spec lint PPKit.podspec
如果验证不通过,可以执行pod spec lint PPKit.podspec --verbose查看详细的ERROR和WARING提示,根据提示依次解决,然后回到第四步重新来一遍。
注意:在重新开始之前,我们要删除远程库的tag和本地的tag,命令如下:

$ git tag -d 0.0.68 //删除本地tag
$ git push origin :refs/tags/0.0.68 // 删除远程库tag

直到如下图的验证成功

第六步:提交.podspec到CocoaPods

pod trunk push PPKit.podspec

如果是第一次提交,需要先执行下面的命令去CocoaPods注册(填写邮箱,收取验证链接,点击链接,就OK):

$ pod trunk register 邮箱 '昵称' --description=' 这里写描述'

然后再执行:

pod trunk push PPKit.podspec

OLA,到此就结束了,赶紧去pod search一下,看有没有!

遇到的问题s:

1. pod search PPkit 搜不出

【方案一】cocoapods search 获取不到最新库的解决方法
我用的是第二种:执行 pod repo update更新本地仓库,再pod search PPkit ,就能 搜到了。 【方案二】执行 pod search PPkit --simple


Powered By Z-BlogPHP 1.7.3

Copyright 粤ICP备2024347557号 Rights Reserved.