随着工程体量的增大,开发人员增多,为了更好的合做开发,经常咱们须要对大工程进行拆分红一个个小工程,这样作有几点好处:ios
下面咱们就经过pod来建立一个子工程并经过pod在主工程来引入git
Xcode
新建一个工程例如叫HomeModule
HomeModuleDemo
的工程Classes
的文件夹,将须要导出的代码类都放在这个文件夹下,创建一个Resources
文件夹,将须要导出的资源文件放在这个目录下pod spec create HomeModule
,这段命令会在目录下生成HomeModule.podspec
文件,这个文件其实就是对这个工程的描述,例如工程名称、托管地址、须要导出哪些文件等下面是进行到这一步的目录示例图github
好了,如今能够先将这个项目托管到线上git仓库bash
打开HomeModule.podspec
作一些编辑,下面是一些经常使用配置的编辑app
Pod::Spec.new do |s|
s.name = "HomeModule"
s.version = "0.0.1"
s.summary = "HomeModule is a ...."
s.homepage = "https://github.com/xxx"
s.license = "MIT"
s.author = {
"xxx" => "xxx@gmail.com",
}
s.source = { :git => "https://github.com/xxx/HomeModule.git", :tag => "#{s.version}" }
s.source_files = "Classes/*.{h,m}"
s.resources = "Resources/*.png"
s.requires_arc = true
s.ios.deployment_target = "7.0"
s.osx.deployment_target = "10.9"
s.watchos.deployment_target = "2.0"
s.tvos.deployment_target = "9.0"
s.frameworks = 'UIKit'
s.dependency 'Masonry', '~> 0.6.2'
end
复制代码
值得关注的是下面几个点工具
s.source
是项目托管地址s.source_files
须要导出的文件,就是最终其它工程经过pod引入你这个项目时的文件,这里就体现了pod的好处,咱们开发组件时能够是个完整的iOS工程,可单独开发运行调试,经过pod给别人用时就只须要导出核心的那些文件就好了s.resources
须要导出的资源文件s.source_files = "Classes/**/*.{h.m}"
s.resources做一样的写法s.frameworks
你依赖的系统库s.dependency
你依赖的其它第三方pod库这个仓库主要用来托管咱们本身的podspec文件,就是本例中的HomeModule.podspec
,例如之后的ShopCartModule.podspec
等等...gitlab
Cocoapods
的官方spec仓库是https://github.com/CocoaPods/Specs
,不少咱们经常使用的第三方库例如AFNetworking的podspec文件就托管在这个仓库里面,在咱们第一次使用cocoapods的时候就会将这个仓库克隆到本地的user/xxx/.cocoadpos/repos/master
,你可进入这个目录看看,就会发现每一个库的每一个版本的podspec文件都在里面,当咱们经过pod search
搜索第三发库的时候,实际就是在搜索这个目录。有些时候一些第三方库已经发布新版本了,但咱们搜索到的仍是老版本,就是由于这个库没有更新。ui
下图为克隆到本地的Cocoapods官方Specs仓库: url
pod repo list
咱们能够看到本地有哪些spec仓库,以及仓库的url和本地地址信息等,以下图中是Cocoapods官方Spec仓库,名为master
master
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/geforceyu/.cocoapods/repos/master
复制代码
顺便提一下,不少同窗会知道pod update
和pod setup
都很是慢,这两个命令都会更新这个仓库,你们能够将master仓库的url切换为清华大学的cocoapods官方spec镜像源,具体详见清华大学软件源spa
好了,了解完官方spec仓库后,咱们能够开始建立本身的spec仓库了。
.cocoapod/repos/xxxPodSpecs
,固然这里使用pod命令行工具来执行,pod repo add xxxPodSpecs https://github/xxx/xxxPodSpecs.git
,执行完成后再执行pod repo list
就能够看到咱们私有的spec仓库在列了。pod repo push xxxPodSpecs HomeModule.podspec
,这里pod会执行一次校验,通常会报一些warn,你能够去解决一下,若是不想解决直接忽略的话,执行pod repo push xxxPodSpecs HomeModule.podspec --allow-warnings
,不过若是是error错误,是没法忽略的。这里顺便提一下,在我使用1.5.3版本pod执行的时候,会报一个error是bug引发的,没法解决,经过升级到最新版pod就行了,升级pod只须要执行sudo gem install cocoapods
就好了。若是你想多个pod切换使用,请参考这篇文章多个版本的 CocoaPods 的切换podfile
文件,在头部添加两行source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/xxx/xxxPodSpecs.git'
复制代码
在后面就能够添加pod引用HomeMoudle了
pod 'HomeModule', '0.0.1'
复制代码
能够看到一个是官方specs仓库,一个是咱们私有spec仓库,由于咱们本身的HomeModule.podspec
文件是托管到私有的xxxPodSpecs仓库的,若是不添加咱们本身的私有spec仓库源,那么pod install
的时候是在官方spec仓库搜索HomeModule.podspec的。
当咱们继续为子工程HomeModule开发新的功能后,咱们须要更新咱们的版本,具体操做以下
pod repo push xxxPodSpecs HomeModule.podspec --allow-warnings
podfile
更新为pod 'HomeModule', '0.0.2'
复制代码
pod install
一般咱们会经过一个demo工程来给他人演示库的一些用法,首先咱们须要将demo工程经过pod集成咱们的HomeMoudle
cd
到HomeModuleDemo
目录,执行pod init
建立一个podfile
。编辑podfile
文件添加HomeModuel
引入target 'HomeModuleDemo' do
pod 'HomeModule', :path => '../'
end
复制代码
这里咱们经过:path => '../'
直接指向本地的HomeModule.spec
地址便可。
pod install
HomeMoudleDemo.xcworkspace
,开始编写示例代码。好了,大体的操做步骤就这些,文章中哪些地方不够详细或者错误的,欢迎各位看官指正出来,谢谢🙏