快速搭建Pod私有库
使用 pod lib create 新建工程
【快速搭建Pod私有库】这种方式创建的工程,pod会做好相关的配置,可以直接开发
pod lib create Chariot
会有六个选项需要自己设置
![快速搭建Pod私有库](https://img.it610.com/image/info10/e8bb0d0f64414c70a9bc81ec384e96e7.jpg)
文章图片
配置项 创建成功后得到工程文件夹,文件结构如下:
![快速搭建Pod私有库](https://img.it610.com/image/info10/0b7d0d3ad6dd4142bf204a546a02a25e.jpg)
文章图片
文件夹结构 开发时,将要制作成库的.h和.m文件拖拽到Classes文件夹,将相关的资源文件拖拽到Assets
![快速搭建Pod私有库](https://img.it610.com/image/info10/2addc7606ed94b068ec05322252a1638.jpg)
文章图片
文件夹结构 打开Example文件夹中的.xcworkspace,编辑.podspec文件
![快速搭建Pod私有库](https://img.it610.com/image/info10/45446f2a5cfc43e5ae3614ba032be8bb.jpg)
文章图片
podspec 这里只列举了常用的设置项
Pod::Spec.new do |s|
# 库名
s.name= 'Lathe'
# 版本,这个版本是可用的tag
s.version= '0.1.0'
# 概要
s.summary= 'lathe summary'
# 描述
s.description= <<-DESC
lathe description
DESC
# 主页,用来介绍你的库
s.homepage= 'http://***.com/auto/ilathe/wikis/home'
# 屏幕截图
# s.screenshots= 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
# 库支持的许可证
s.license= { :type => 'MIT', :file => 'LICENSE' }
# 库作者
s.author= { 'mht' => '***@***.com' }
# 库位置
s.source= { :git => 'git@***.com:***.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/'
# 部署target需要版本(8.0以上)
s.ios.deployment_target = '8.0'
# 源码位置
s.source_files = 'Lathe/Classes/**/*'
# 资源文件位置(图片 plist json xml 等)
# s.resource_bundles = {
#'Lathe' => ['Lathe/Assets/*.png']
# }
# 公共头文件
# s.public_header_files = 'Pod/Classes/**/*.h'
# 依赖的系统框架
# s.frameworks = 'UIKit', 'MapKit'
# 依赖的三方库 多个库直接在后面追加dependency
# s.dependency 'AFNetworking', '~> 2.3'
# s.dependency 'Mock', '~> 2.3'
# s.dependency 'YYKit', '~> 2.3'
end
将库文件拖拽到Classes文件夹
![快速搭建Pod私有库](https://img.it610.com/image/info10/8b03f39da560416682b52b3ac884fcea.jpg)
文章图片
新增库文件 cd到Example工程目录下,并执行pod install
cd /Users/miaoht/Desktop/Lathe/Example
pod install
![快速搭建Pod私有库](https://img.it610.com/image/info10/93f1a95a66054d15a85f590e0221ac89.jpg)
文章图片
执行完成后,打开Example工程,编译一次(有很多时候不编译一次,没法引用库),就可以使用#import <>的方式引用自己的库了
接下来校验podspec文件的正确性
cd /Users/miaoht/Desktop/Lathe
pod lib lint
![快速搭建Pod私有库](https://img.it610.com/image/info10/902f745ded7b4df4bf53b549db03c394.jpg)
文章图片
绿色字提示通过
其中
s.source = { :git => 'git@***.com:auto/ilathe.git', :tag => s.version.to_s }会警告,可以忽略
s.source = { :git => 'http://***.com/auto/ilathe.git', :tag => s.version.to_s } 这样写没有警告
在git服务器上(自己部署的gitlab或GitHub、码云等)创建并checkout出工程
上传刚刚创建好的工程,使用sourcetree或者命令行新建对应的tag,这个tag号对应着.podspec中的版本号,pod时会自动拉取对应版本,创建tag时一定要在服务器上创建,或者本地创建tag推送到服务器,总之保证服务器上存在.podspec中对应版本的tag
![快速搭建Pod私有库](https://img.it610.com/image/info10/82ccb4af62a34125b4e166622c18a9a6.jpg)
文章图片
cd进入cd /Users/miaoht/Desktop/Lathe 校验podspec文件的正确性(如果有无关紧要的warning可以忽略)
pod repo lint
关键点:创建私有库 在git服务器上创建存放podspec文件的库,就跟创建代码库一样,只不过这个库是用来存放podspec文件的。
向本地pod库中添加podspec文件的库 ,REPO_NAME是库名,SOURCE_URL是podspec库地址
pod repo add REPO_NAME SOURCE_URL
将podspec推送到podspec库(如果podspec文件存在警告这个操作也会失败,可以在后面加--allow-warnings允许警告)
pod repo push REPO_NAME SPEC_NAME.podspec
![快速搭建Pod私有库](https://img.it610.com/image/info10/2a008ca1efc24cd881cf4017900200e7.jpg)
文章图片
推送成功后,就可以使用pod引入库了
这里写podfile的时候要加上 source 'podspec 库 的 url',这样pod会去指定的podspec库检出依赖库
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'source 'git@***.com:888/HelloPodSpecs.git'target 'PodTest' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!# Pods for PodTest
pod 'HelloPod'
end
最后执行pod install ,就可以看到自己的库被引用进工程了
配置库的层次 s.subspec 'Router' do |ss|
? ss.source_files = 'HelloPod/Classes/Router/*.{h,m}'
end
使用上述方法可以配置工程的层次,别人在使用的时候可以只pod出指定的库文件
例如:pod 'HelloPod/Router'
Pod::Spec.new do |s|
s.name= 'HelloPod'
s.version= '0.1.1'
s.summary= 'A short description of HelloPod.'s.description= <<-DESC
TODO: Add description of the pod here.
DESCs.homepage= 'http://opensource.cnsuning.com/888/HelloPod/wikis/home'
# s.screenshots= 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license= { :type => 'MIT', :file => 'LICENSE' }
s.author= { '缪海涛' => '18242657@suning-sports.com' }
s.source= { :git => 'git@opensource.cnsuning.com:888/HelloPod.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0's.source_files = 'HelloPod/Classes/*.{h,m}'s.subspec 'Router' do |ss|
ss.source_files = 'HelloPod/Classes/IMAGE/*.{h,m}'
endend
推荐阅读
- 六步搭建ES6语法环境
- (1)redis集群原理及搭建与使用(1)
- 桁架搭建有什么价值()
- neo4j|neo4j cql语句 快速查询手册
- VM|VM ware 的 harbor 私有仓库搭建 (Ubuntu16.04)
- PHP开发-Mac搭建ThinkPHP5.0
- 通过复盘快速成长(附模板)
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- sentry搭建错误监控系统(二)
- 【乐高创意作品】超智能!这款乐高搭建的除草机!