美文网首页
iOS 高级开发(7)之 组件化(二)远程化私有库

iOS 高级开发(7)之 组件化(二)远程化私有库

作者: iOS刘耀宗 | 来源:发表于2021-09-04 09:17 被阅读0次

    在上一篇文章iOS 高级开发(6)之 组件化(一)私有化本地仓库我们已经讲解了如何私有化一个本地仓库. 那么本篇文章我们将继续讲解如何远程化一个私有库

    大伙有没有发现, 每次面试 AFN 这些东西的底层原理是必问的. 小编很烦, 就自己写了一个LYZNetworking,方便以后面试装逼 我如何把它发布到远程仓库, 方便大家利用 pod install 呢?

    第一步:
    我已经创建了一个 pod 模板 ,并把自己的代码已经替换了进去, 不明白在讲什么的,需要先看上一篇文章iOS 高级开发(6)之 组件化(一)私有化本地仓库

    image.png

    打开 github 在自己的仓库里面新建项目

    LYZ_Networking.png
    这里一定要选择 license. 否则会导致发布失败!

    第二步:
    将我们的模板代码,也就是创建这个模板的项目推送至远程仓库. 这一步不用详说吧. 看本篇文章都有能力把代码推送到 github.并打上 tag, 打上 tag 的作用是方便版本管理
    比如我现在的框架 LYZNetworking 已经是 0.0.4 了. 那么我接下来要发布新的版本, 于是我就新创建一个 tag 0.0.5

    tag.png

    第三步:
    修改 LYZNetworking.podspec 文件

    Pod::Spec.new do |s|
      s.name             = 'LYZNetworking'
      s.version          = '0.0.5'  //一定要和 tag 保持一致, xcode 项目的版本也要保持一致
      s.summary          = 'LYZNetworking 是一款简单易用的网络框架, 支持 get, post, 配置简单, 稳定可靠'
    
    # This description is used to generate tags and improve search results.
    #   * Think: What does it do? Why did you write it? What is the focus?
    #   * Try to keep it short, snappy and to the point.
    #   * Write the description between the DESC delimiters below.
    #   * Finally, don't worry about the indent, CocoaPods strips it!
    
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
    
      s.homepage         = 'https://github.com/liuyaozong1/LYZ_Networking' //代码主页
      # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { '648731281@qq.com' => '648731281@qq.com' }
      s.source           = { :git => 'https://github.com/liuyaozong1/LYZ_Networking.git', :tag => s.version.to_s }//代码下载地址
      # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
    
      s.ios.deployment_target = '11.0' //最低支持的版本
    
      s.source_files = 'LYZNetworking/Classes/**/*'  //需要上传至 cocopods 代码的目录
      
      s.swift_version = '5.0'  //必须是 swift 5.0
      
      s.platform =  :ios,'11.0'
      
      # s.resource_bundles = {
      #   'LYZNetworking' => ['LYZNetworking/Assets/*.png']
      # }
    
      # s.public_header_files = 'Pod/Classes/**/*.h'
      # s.frameworks = 'UIKit', 'MapKit'
      # s.dependency 'AFNetworking', '~> 2.3'
    end
    

    s.name:名称,pod search搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
    s.version:版本号,to_s:返回一个字符串
    s.author:作者
    s.homepage:项目主页地址
    s.summary: 项目简介
    s.source:项目源码所在地址
    s.license:许可证
    s.platform:项目支持平台
    s.requires_arc: 是否支持ARC
    s.source_files:需要包含的源文件
    s.public_header_files:需要包含的头文件
    s.ios.deployment_target:支持的pod最低版本

    关于上面参数的修改,推荐一篇文章
    https://www.jianshu.com/p/3a365f273439

    第四步:
    cd 到.podspec 目录
    校验podspec,检测是否有错误

    pod spec lint LYZNetworking.podspec --verbose
    

    发布

    pod trunk push LYZNetworking.podspec
    

    如果你之前没有注册 trunk ,会直接提示你去注册, 按照提示注册完之后发布

    发布过程中, 可能会遇到各种问题, 都有有很清晰的 error 标识 按照它修改完毕,一般问题不大, 实在不会就百度吧!

    发布成功之后
    立马 pod 'LYZNetworking' 然后 install 是搜不到的. 需要等一会.

    相关文章

      网友评论

          本文标题:iOS 高级开发(7)之 组件化(二)远程化私有库

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