前言
仅内部人员使用
之前操作私有库做法与公开库的做法类似,结果在目录~/.cocoapods/repos
下出现的情况是版本描述与代码都出现在了这里。
以上这种情况使用Pod应用是可以拉取到代码的,但是我在尝试版本迭代的时候对于版本控制的校验与push就相当的混乱,这么说吧,我一次没成功。
所以我们需要创建两个库
一个版本库
一个代码库
正文
首先是版本库
上面是私有库,使用终端将版本仓库加载到本地
$ pod repo add TESTLibrary https://git.artron.net/pod/TESTLibrary.git
此时在目录~/.cocoapods/repos
下出现一个TESTLibrary
的版本库
然后是代码库
创建一个名为TEST
的代码库,创建时需要添加MIT License
添加License时选择模板 MIT
以上是代码库,将代码库克隆到本地,添加几项必须的文件
仓库名.podspec
.swift-version
需要使用的代码文件
ps:隐藏文件显示mac版本command + shift + >
.swift-version
创建
$ echo "4.2" > .swift-version
.podspec
创建
$ pod spec create TEST
文件
创建
创建文件夹,将需要的代码放入,这里比较重点的是文件路径
,需要格外注意
下面是.podspec
的设置
Pod::Spec.new do |spec|
spec.name = "TEST" #项目名称
spec.version = "0.0.1" #项目版本号
spec.summary = " Today is the Lantern Festival, and I hope all goes well in 2019" #项目描述
spec.requires_arc = true # 是否启用ARC
spec.platform = :ios, "8.0" #平台及支持的最低版本
spec.swift_version = "4.2" #swift版本 如果代码中有swift文件
spec.social_media_url = "https://git.artron.net/liuwei" # 个人主页
spec.description = "LICENSE" } #许可证
spec.author = { "刘威" => "liuwei@artron.net" } #主页地址
spec.source = { :git => "https://git.artron.net/pod/TEST.git", :tag => "#{spec.version}" } #源地址,后面指向版本号(做好tag)
spec.source_files = "TEST/*.{h,m}","TEST/*.swift" #这个是文件地址,重要的就是这个,也经常出问题
spec.exclude_files = "TEST/Exclude"
# spec.public_header_files = "Classes/**/*.h"
#以下是库的依赖使用 2 个公共库一个私有库
spec.dependency 'SDWebImage', '~> 3.8.2'
spec.dependency 'SwiftHTTP','~>3.0.0'
spec.dependency 'TESTRely','~>0.0.1'
end
此时可以去校验仓库正确性
$ pod lib lint
我设置的.summary
是存在问题的,但是至少警告⚠️可以忽略,修改验证
$ pod lib lint --allow-warnings
这里插入校验遇到的常见问题,以上述配置为例子
1.source_files
这个在校验时总是出问题,仔细检验正确性
2'TESTRely','~>0.0.1'
这个是我自己另外一个私有库,如果校验的话是需要紧跟--sources地址的,具体就修改为$ pod lib lint --soures=https://git.artron.net/pod/TESTRelyLibrary.git,https://github.com/CocoaPods/Specs.git --allow-warnings
其中TESTRelyLibrary
是TESTRely
的版本管理库
3.dependency
这个参数设置必须需要指定版本号
4.dependency
这个设置私有库,如果公开库上存在相同项目名称的话,会先去公开库上校验,pod处理也是同样的问题,除非公开库上的版本号与自己设置的版本号匹配不上才回去私有库校验。所以无论哪个库的创建,保证自己不重名
。
5.dependency
我设置了,不需要的可以忽略,以上仅仅是测试
验证没问题之后是
-> TEST (0.0.1)
TEST passed validation.
接下来的操作是
1.在打tag之前把本地的修改push到git上,如果某些顺序出问题可以校验tag并删除错误tag
$ git tag
$ git tag -d 版本号
$ git push origin :refs/tags/版本号
2.打tag,保证tag与version(.podspec中)保持一致 (0.0.1)
$ git tag 0.0.1
$ git push --tags
3.将代码库的描述文件.podspec
推送到版本管理库中
$ pod repo push TESTLibrary TEST.podspec --allow-warnings
之所以跟着--allow-warnings
是因为之前说过的.summary
存在问题,否则push不成功。
以上操作完成之后会在~/.cocoapods/repos
新增了仓库描述信息
到这里就可以进行search操作查看信息了
$ pod search TEST
接下来是使用
在Podfile
中需要指定私有库地址,如果引用了公用库还需要公有库地址,我的例子中还引用了私有库(私有库引用私有库)所以还需要把引用的私有库的地址也带上https://git.artron.net/pod/TESTRelyLibrary.git
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.artron.net/pod/TESTLibrary.git'
source 'https://git.artron.net/pod/TESTRelyLibrary.git'
platform :ios, '8.0'
target 'your_project' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
pod 'TEST','0.0.5'
end
测试
$ pod install
参考资料
主要资料:
CocoaPods 私有仓库的创建(超详细) (按照该篇写的,补充了自己遇到的问题)
其余相关资料:
CocoaPods公有仓库的创建
使用cocoapods打包静态库(依赖私有库,开源库,私有库又包含静态库)
使用私有Cocoapods仓库 中高级用法
podspec文件解析