CocoaPods是啥就不多说了,为了实现iOS组件化,需要手动基于公司的gitlab搭建私有仓库。
零、环境配置
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进行开发即可。