快速搭建Pod私有库

使用 pod lib create 新建工程
【快速搭建Pod私有库】这种方式创建的工程,pod会做好相关的配置,可以直接开发

pod lib create Chariot

会有六个选项需要自己设置
快速搭建Pod私有库
文章图片
配置项 创建成功后得到工程文件夹,文件结构如下:
快速搭建Pod私有库
文章图片
文件夹结构 开发时,将要制作成库的.h和.m文件拖拽到Classes文件夹,将相关的资源文件拖拽到Assets
快速搭建Pod私有库
文章图片
文件夹结构 打开Example文件夹中的.xcworkspace,编辑.podspec文件
快速搭建Pod私有库
文章图片
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私有库
文章图片
新增库文件 cd到Example工程目录下,并执行pod install
cd /Users/miaoht/Desktop/Lathe/Example
pod install
快速搭建Pod私有库
文章图片
执行完成后,打开Example工程,编译一次(有很多时候不编译一次,没法引用库),就可以使用#import <>的方式引用自己的库了
接下来校验podspec文件的正确性
cd /Users/miaoht/Desktop/Lathe
pod lib lint
快速搭建Pod私有库
文章图片
绿色字提示通过
其中
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私有库
文章图片
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私有库
文章图片
推送成功后,就可以使用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

    推荐阅读