Cocoapods私有库步骤
本地代码库 ——> 远程代码仓库
本地pod repo 仓库存储索引 -> 远端仓库存储索引
本地代码库
创建文件夹test_pod,cd到test_pod文件夹
pod lib create 组件名称
此时xcode应该自动打开了test_myPod
打开test_pod文件夹,本地生成文件如下\
- Asset文件夹:存放图片等资源文件\
- Classes文件夹:存放代码文件
将Classes文件夹下的ReplaceMe.m文件删除,并将我们的代码拖入 并且cd到Example文件夹下 重新 pod install
编辑podspec文件
podspec文件 详细介绍点击这里
Pod::Spec.new do |s|
s.name = 'test_myPod' # 名称
s.version = '0.3.0' # 版本号
s.summary = 'A short description of test_myPod.' # 简短介绍,下面是详细介绍
# 这里是详细介绍
s.description = <<-DESC
这里是详细介绍
DESC
# 项目主页 要填写可以访问到的地址,不然验证不通过
s.homepage = 'https://gitee.com/sun_shibin/test_my-pod.git'
# Pod 屏幕截图,支持单个或者数组,主要适用于UI类的pod库。cocoapods推荐使用gif
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' } # 开源协议 必须要有
s.author = { 'SHIBIN SUN' => 'nslog_sun@163.com' } # 作者信息
# 项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
# 项目git地址,tag值与spec.verison版本一致
s.source = { :git => 'https://gitee.com/sun_shibin/test_my-pod.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' # 多媒体介绍地址
s.ios.deployment_target = '9.0' #支持的平台及版本
# 支持的swift版本
# s.swift_version = ‘5.0'
# 是否使用静态库。如果podfile指明了use_frameworks!命令,但是pod仓库需要使用静态库则需要设置
# s.static_framework = true
# 代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
s.source_files = 'test_myPod/Classes/**/*'
# 子模块
s.subspec 'RACExtentions' do |ss|
# 子模块文件, 文件信息如上
ss.source_files = 'test_myPod/Classes/RACExtentions/**/*'
ss.dependency 'ReactiveObjC'
end
# 资源文件地址
s.resource_bundles = {
'test_myPod' => ['test_myPod/Assets/*.png']
}
# s.private_header_files = 'Pod/Classes/**/*.h' # 指定不公开的头文件
# s.public_header_files = 'Pod/Classes/**/*.h' # 公开头文件地址
# s.frameworks = 'UIKit', 'MapKit' # 所需的framework,多个用逗号隔开
# 依赖的第三方framework 后面是路径
# s.vendored_frameworks = ['Module/*.framework']
# 依赖的第三方 .a 后面是路径
# s.vendored_library = 'Module/Classes/SDK/*.a'
# 依赖的 .a 多个用逗号隔开
# s.libraries = ['xml2.2','sqlite3.0']
# 依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
s.dependency 'MMKV'
s.dependency 'Realm'
s.dependency 'UICKeyChainStore'
s.dependency 'YYCache'
s.dependency 'AFNetworking'
# 自定义前缀文件 默认为系统 头文件
# s.prefix_header_file = false
# s.prefix_header_file = 'iphone/include/prefix.pch'
# 向系统 pch 文件中添加头文件 多个用逗号隔开
# s.prefix_header_contents = '#import <UIKit/UIKit.h>' , '#import "Test.h"'
end
远程代码仓库
创建私有远端代码仓库,自行百度
注意 不添加ReadMe和.gitignore文件,因为pod lib create创建的项目里已经有这两个文件了
- git add .
- git commit -m "提交信息"
- git remote add origin 远程代码仓库地址
- git push origin master
- git tag 版本号 (注:这里的版本号必须和 podspec 里写的版本号一致)
- git push --tags
将本地仓库上传到远程代码库,
注意编辑podspec文件,s.source 改为远端代码库地址
s.homepage = 'https://gitee.com/sun_shibin/test_my-pod.git'
s.source = { :git => 'https://gitee.com/sun_shibin/test_my-pod.git', :tag => s.version.to_s }
远程索引仓库
思考:当我们pod 'AFNetworking'。pod install 时cocoapods做了什么?
[cocoapods的官方Specs索引]-->(AFNetworking的配置信息)-->(AFNetworking的具体代码)
当我们使用pod search AFNetworking的时候,就是去cocoapods的Specs索引中找到AFNetworking的配置信息,然后通过这个配置信息,配置信息包含的在github上的代码地址,去获得对应的代码。
现在我们要做的就是按照cocoapods官方的这一套来生成我们自己的一套,我们自己生成一个非官方的Specs索引,在这个索引里只存放公司的库索引,也就是一个个组件,这些组件的具体地址,放到我们想放到的地址下面。如:码云,GitHub等。注意:索引库远端地址和代码不是用一个,远程索引库只用来存放Specs索引配置文件
通过 pod repo add 本地索引库的名字 远程索引库的地址不是代码库地址! 命令 创建本地索引库并和远程索引库做关联
pod repo add test_myPod gitee.com/sun_shibin/…
pod repo 查看自己的本地仓库都有哪些?
把自己私有库的索引添加到自己私有库中
pod repo push 索引库名称 当前组件中podspec文件 (记得要把podspec文件里s.source 地址换成自己的远程地址---)
cd 到test_myPod.podspec所在文件夹
pod repo push test_myPod test_myPod.podspec --allow-warnings
远程私有仓库一定要有个分支,比如master,不然pod repo push会报错
pod search test_myPod
使用
Podfile文件中添加远端索引地址
source 'https://gitee.com/sun_shibin/my-private-search-spec.git'
pod install 就可以愉快的玩耍了
转载
cocoapods系列教程---创建私有pods
cocoapods系列教程---模块化设计
cocoapods系列教程---spec文件
iOS开发 -- 组件化 之 Cocoapods私有库详解