美文网首页
cocoapods私有库使用

cocoapods私有库使用

作者: 張牙舞爪的那隻貓 | 来源:发表于2019-02-20 17:34 被阅读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文件解析

    相关文章

      网友评论

          本文标题:cocoapods私有库使用

          本文链接:https://www.haomeiwen.com/subject/jewcyqtx.html