成都网站建设设计

将想法与焦点和您一起共享

iOS组件化—CocoaPods搭建私有仓库

CocoaPods是啥就不多说了,为了实现iOS组件化,需要手动基于公司的gitlab搭建私有仓库。

我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、乌海ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的乌海网站制作公司

零、环境配置

1.更换gem源:

$ gem sources -r https://rubygems.org/             //删除旧源
$ gem sources -a https://gems.ruby-china.com/      //添加新源 =>RubyGems镜像的管理工作已经移交给了Ruby China负责
$ get sources -l                                   //查看源列表

2.更新gem

$ sudo gem update --system

3.安装cocoapods

OS X 10.11之前系统的安装cocoapods 指令:$ sudo gem install cocoapods
OS X 10.11以后系统的安装cocoapods 指令:$ sudo gem install -n /usr/local/bin cocoapods

一、概念

首先要先区分俩概念:
Code Repository:比如我开发了一个功能模块Test,源码文件是保存到Code Respository的,就是我们平时用的git仓库。
Specs Repository:针对Test会有一个Test.podspec文件用来配置Test的发布的,保存podspec文件的仓库就是Specs Repository。它保存了所有要发布的组件的podspec文件,仅用来配置,叫配置仓库。

二、步骤

分清了上面两个概念,搭建私有仓库也就可以分为两步走了。

1.创建代码仓库Code Repository。

(1) 在gitlab上创建项目Test(http://git.layne.com/Test.git ),checkout到本地~/Test中,然后往该文件夹中添加如下内容

LICENSE
README
Classes/
Test.podspec

说明:
①其中Classes为文件夹,用来存储组件的源码,这里我只以SceneDelegate.swift文件为例,即Classes文件夹中只存放SceneDelegate.swift文件。最终路径为Classes/Swift/SceneDelegate.swift.
②Test.podspect为当前这个组件的pod描述,内容如下:

Pod::Spec.new do |spec|
  spec.name         = "Test"       # 组件名字
  spec.version      = "0.0.1"      # 组件版本,该文件上传的git仓库之后需要对其进行tag,tag的版本号要和这个一致。
  spec.summary      = "Used to Test how to use Pod."  #简要描述
  spec.swift_versions = ['3.2', '4.0', '4.2']    #若使用swift,需要制定swift版本
  spec.description  = <<-DESC    #详细描述
                        podCreateTest I love my country and love my family
                   DESC
  spec.homepage     = "http://git.layne.com/Test"   # git仓库的地址,即去掉.git后缀之后前面的部分
  spec.license      = { :type => 'MIT', :file => 'LICENSE' }

  spec.author             = "layne.zhang"
  spec.platform     = :ios
  spec.ios.deployment_target = "13.0"

  #source
  spec.source       = { :git => "http://git.layne.com/Test.git", :tag => "#{spec.version}" }
  spec.source_files  = "Classes/Swift/SceneDelegate.swift"
  spec.exclude_files = "Classes/Exclude"
  # spec.public_header_files = "Classes/**/*.h"
  # spec.dependency "JSONKit", "~> 1.4"

end

注释都已经在上边了,当然你也可以使用如下命令生成一个默认的Test.podspec,然后进行修改:

pod spec create Test

(2) 验证Test.podspec
上传到gitlab之前,要先对Test.podspec进行验证。在~/Test位置打开Terminal,执行:

pod lib lint

验证成功之后,将~/Test内添加的四样内容推送到gitlab上。
(3) 创建tag。
tag名要和上面podspec文件中spec.version的值一致,即为0.0.1。

2.创建配置仓库Specs Repository

(1)跟创建代码仓库一样,在gitlab上创建一个仓库命名为Specs(http://git.layne.com/Specs.git ),这个仓库用来保存.podspec文件。空仓库需要创建一个README文件,因为gitlab在空仓库中是没有分支的,加个README让其自动创建master分支。
(2)执行以下命令,将配置仓库checkout到本地

pod repo add Test http://git.layne.com/Specs.git

但是,checkout下来之后是存在~/.cocoapods/repos下面的,即执行了上面的命令之后,会生成:

~/.cocoapods/repos/Test

(3)将Test.podspec添加到配置仓库:
在代码仓库checkout的路径~/Test下面打开Terminal,执行push命令

pod repo push Test Test.podspec

这个命令可以这样理解:将当前目录(~/Test)下的Test.podspec文件推送到~/.cocoapods/repos目录下Test文件夹对应的远程仓库中。

3.使用

经过上面的两个步骤,我们就完成了组件的分发。接下来是使用:

(1) 搜索
pod search  Test

通过搜索可以查看组件的信息。若搜索不到,可以先删除pod的缓存:

rm ~/Library/Caches/CocoaPods/search_index.json
(2) 项目中引入(以MYLIB为例)

在MYLIB位置打开Terminal,执行:

pod init

会在MYLIB文件夹中生成Podfile文件。编写内容如下:

source 'http://git.layne.com/Specs.git' #这里指定Specs Repository的地址,而非Code Repository的地址
platform :ios, '13.0'
target 'MYLIB' do #当前项目名称pod 'Test'
end

之后在Terminal中执行:

pod install

执行安装。后续使用.xcworkspace进行开发即可。

(3)维护好podspec,记得每提交一个版本,都要在code repository中打tag,然后更新podspec。

分享名称:iOS组件化—CocoaPods搭建私有仓库
标题来源:http://chengdu.cdxwcx.cn/article/ghocoe.html