iOS 伪组件专题基础

使用Cocoapods创建私有podspec

2017-02-24  本文已影响300人  崔可一

整体说明一下创建私有podspec的步骤:

1,创建一个远程的git库用于存储代码,将新建的git库clone到本地,添加需要导入pod库中的代码。

2,创建并设置一个私有的Spec Repo。

3,在本地git库文件夹中创建pod所对应的podspec文件。

4,本地测试配置好的podspec文件是否可用。

5,向私有的spec repo中提交podspec。

6,在项目中的Podfile中增加刚刚制作好的Pod并使用。

7,后续更新维护podspec。

一,创建私有的Spec Repo

什么是 Spec Repo ? 它是所有的 Pods 的一个索引,就是一个容器,所有公开的 Pods 都在这个里面,它实际是一个 Git 仓库 remote 端在 GitHUb 上,但是当你使用了 CocoaPods 后它会被 clone 到本地的 ~/.cocoapods/repos 目录下。第一步先创建远端的 GitHub,并clone到本地:

    git clone git@github.com:Cuidawang/CKYTool.git
image

创建之后在 Terminal 中执行如下命令:

 # pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
 $ pod repo add CKYTool git@github.com:Cuidawang/CKYTool.git

此时如果成功的话,进入 ~/.cocoapods/repos 目录下就可以看见 CKYTool 这个目录了。到这第一步就完成了。

PS: 如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可。

二,添加需要的代码文件到CKYTool目录下

比如我选取了一个文件管理和一个分类的文件进行测试,将这两个文件添加到 CKYTool 中,

image

三,创建项目的podspec文件

使用终端命令cd到CKYTool文件下执行命令:

    pod spec create CKYTool

这时候本地会生成一个 CKYTool.podspec 文件,使用 sublime 打开 CKYTool.podspec 文件,删除不必要的注释,最后的文件形式如下:

Pod::Spec.new do |s|

  s.name         = "CKYTool"                            #名称
  s.version      = "0.0.1"                              #版本号
  s.summary      = "CKYTool."    #简短介绍
  
  s.description  = <<-DESC
    对这个pod文件进行描述,这的描述要比summary的长。
                   DESC

  s.homepage     = "https://github.com/Cuidawang/CKYTool"   #主页
  s.license      = "MIT"                                    #开源协议

  s.author       = { "Cuikeyi" => "https://github.com/Cuidawang/CKYTool" }
  s.platform     = :ios, "8.0"
  s.source       = { :git => "https://github.com/Cuidawang/CKYTool.git", :tag => "#{s.version}" }
  s.header_dir   = "CKYTools"                           #Pod安装之后的文件名
  s.requires_arc = true

  s.subspec 'XHCCategories' do |ss|
    ss.header_dir   = 'XHCCategories'

    ss.subspec 'NSDate' do |sss|
      sss.source_files = "XHCTools/XHCCategories/NSDate/**/*.{h,m}",
      sss.header_dir = 'NSDate'
    end

    ss.subspec 'NSString' do |sss|
      sss.source_files = "XHCTools/XHCCategories/NSString/**/*.{h,m}",
      sss.header_dir = 'NSString'
    end

    ss.subspec 'NSDate' do |sss|
      sss.source_files = "XHCTools/XHCCategories/NSDate/**/*.{h,m}",
      sss.header_dir = 'NSDate'
    end

    ss.subspec 'UIButton' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIButton/**/*.{h,m}",
      sss.header_dir = 'UIButton'
    end

    ss.subspec 'UIColor' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIColor/**/*.{h,m}",
      sss.header_dir = 'UIColor'
    end

    ss.subspec 'UIImage' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIImage/**/*.{h,m}",
      sss.header_dir = 'UIImage'
    end

    ss.subspec 'UIView' do |sss|
      sss.source_files = "XHCTools/XHCCategories/UIView/**/*.{h,m}",
      sss.header_dir = 'UIView'
    end

  end

  s.subspec 'XHCFileManager' do |ss| 
    ss.source_files = "XHCTools/XHCFileManager/**/*.{h,m}",
    ss.header_dir   = 'XHCFileManager'
  end

end

文件中的字段说明参考:http://guides.cocoapods.org/syntax/podspec.html

编辑完 podspec 文件后,需要验证一下这个文件是否可用,如果有任何的 Warning 或者 Error 都是不可以的,它就不能被添加到 Spec Repo 中,不过 xcode 的 Warning 是可以存在的,验证需要执行一个命令

pod lib lint

当如下图时,表示验证通过了

image

Tips:

1,去除Xcode的警告,可以通过命令屏蔽警告:

    pod lib lint --allow-warnings

2,如果出现Error但是提示信息不足,可以添加 --verbose 以获取更多的错误信息

    pod lib lint --verbose

四,提交文件到github,打tag,上传podspec

1,提交文件到github

git add .
git commit -m "first commit"
git pull origin master
git push origin master

2,提交tag

git tag -m "release 0.0.1"  0.0.1
git push --tags

3,上传podspec

pod repo push CKYTool CKYTool.podspec  #前面是本地Repo名字 后面是podspec名字

至此,我们的这个组件库就已经制作添加完成了,使用 pod search CKYTool 就可以找到这个库了。

Tips:

1,提交文件的顺序不能改变,一定要先提交tag标签,之后再上传podspec。否则会上传podspec失败。

2,对于 .podspec 文件,一定要放在文件的最外层,不然就报错。

五,使用制作好的Pod

在完成这一系列步骤后,我们就可以在正式的项目中使用这个私有的Pod了只需要在Podfile文件中添加:

platform :ios, "8.0"

# source 是pod去哪下载地址,写多个source会从上到下一次去加载
source 'https://github.com/Cuidawang/CKYTool.git'
source 'https://github.com/CocoaPods/Specs.git'

target "XXXX" do
    
    pod 'CKYTool'
    
end

然后执行 pod update ,更新依赖库,就可以看见自己的库文件出现在 Pods 子目录中,而不是 Development Pods 中。

Tips:

1,引用使用文件的时候,引用方式为 #import <NSString/NSString+URLEncoding.h>, 就可以找到文件的路径了。

2,也可以在Target -> Build Settings -> User Header Search Paths 中点击加号,添加 $(PODS_ROOT) ,后边设置成recursive,此时可以通过 #import "NSString+URLEncoding.h" 引入头文件。

六,关于Pod的升级

当前的版本是0.0.1,如果我们增加了一些代码文件,更新了一些代码,此时要发布0.0.2版本,需要怎么做呢?

1,修改代码文件,更新代码完毕之后,并更新 CKYTool.podspec 文件,修改s.version = '0.0.2',都修改完成之后,通过 pod lib lint 验证 podspec 文件是否有效,如果有效,进行下一步。

2,验证通过之后,提交自己的代码到git,然后打tag 0.0.2,(一定要打tag和s.verisonxiang相对应),然后提交tag。

3,提交完tag之后,接着上传podspec, pod repo push CKYTool CKYTool.podspec。此时 pod search CKYTool 就会发现0.0.2版本了。

七,删除和添加 Spec Repo

1, 删除一个私有的 Spec Repo:

pod repo remove CKYTool

2,添加

pod repo add CKYTool git@github.com:Cuidawang/CKYTool.git

如果我们要删除私有Spec Repo下的某一个podspec怎么操作呢,此时无需借助Cocoapods,只需要cd到~/.cocoapods/repos/WTSpecs目录下,删掉库目录

八,参考资料

http://blog.wtlucky.com/blog/2015/02/26/create-private-podspec/

上一篇下一篇

猜你喜欢

热点阅读