cocoapods私有库使用

2019-02-20  本文已影响29人  張牙舞爪的那隻貓

前言

仅内部人员使用

之前操作私有库做法与公开库的做法类似,结果在目录~/.cocoapods/repos下出现的情况是版本描述与代码都出现在了这里。

WechatIMG2.png
以上这种情况使用Pod应用是可以拉取到代码的,但是我在尝试版本迭代的时候对于版本控制的校验与push就相当的混乱,这么说吧,我一次没成功。

所以我们需要创建两个库

一个版本库
一个代码库


正文

首先是版本库

WechatIMG3.png

上面是私有库,使用终端将版本仓库加载到本地

$ pod repo add TESTLibrary https://git.artron.net/pod/TESTLibrary.git

此时在目录~/.cocoapods/repos下出现一个TESTLibrary的版本库

WechatIMG4.png

然后是代码库

创建一个名为TEST的代码库,创建时需要添加MIT License

添加License时选择模板 MIT

WechatIMG5.png

以上是代码库,将代码库克隆到本地,添加几项必须的文件

仓库名.podspec
.swift-version
需要使用的代码文件

WechatIMG6.png

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
其中TESTRelyLibraryTESTRely的版本管理库
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新增了仓库描述信息

WechatIMG7.png

到这里就可以进行search操作查看信息了

$ pod search TEST

WechatIMG8.png

接下来是使用

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

WechatIMG9.png

参考资料

主要资料:
CocoaPods 私有仓库的创建(超详细) (按照该篇写的,补充了自己遇到的问题)
其余相关资料:
CocoaPods公有仓库的创建
使用cocoapods打包静态库(依赖私有库,开源库,私有库又包含静态库)
使用私有Cocoapods仓库 中高级用法
podspec文件解析

上一篇下一篇

猜你喜欢

热点阅读