美文网首页程序员
向CocoaPods发布代码

向CocoaPods发布代码

作者: Andy_Ron | 来源:发表于2017-09-30 14:55 被阅读95次

    Cocoapods是非常好用的一个iOS依赖管理工具,用它来管理和更新项目中的第三库使iOS开发更加方便。
    使用别人优秀的代码在程序员开发过程中是非常常见的事,为别人贡献代码也是很有必要的事。
    这篇文章是我总结向Cocoapods贡献代码的过程。我以自己一个非常非常简单的项目ARFPSStatus来记录这个过程。ARFPSStatus非常简单,是Swift写的在状态栏显示屏幕的FPS,源码只有一个Swift文件。

    来吧!🎉我试着为iOS开发贡献一点绵薄之力吧。🎉

    一、安装cocoapods

    sudo gem install cocoapods --pre
    

    二、创建代码并上传代码到Github

    就是要发布的代码了,具体怎么上传代码到Github上我就不重复了。

    三、在github上发布一个版本

    点击这边的release:


    发布一个版本,假设是0.1.0:

    创建podspec文件

    常见一个<项目名称>.podspec文件,我这边就是ARFPSStatus.podspec文件,内容如下:

    Pod::Spec.new do |s|
      s.name         = "ARFPSStatus"
      s.version      = "0.1.0"
      s.summary      = "ARFPSStatus - Show FPS Status on StatusBar in Swift"
      s.homepage     = "https://github.com/andyRon/ARFPSStatus"
      s.license      = "MIT"
      s.authors      = { "andyron" => "rongming.2008@163.com" }
      s.source       = { :git => "https://github.com/andyRon/ARFPSStatus.git", :tag => "0.1.0" }
      s.frameworks   = 'Foundation', 'UIKit'
      s.platform     = :ios, '9.0'
      s.source_files = 'ARFPSStatus/*'
      s.requires_arc = true 
    
    end
    
    1. s.name – 项目名称,也就是别人使用Pod时使用的名字,需要唯一,可事先在Cocoapods上查询一下。
    2. s.version – 这是你 Pod 的版本。务必注意,它得和 Github release 的版本号相同,就是刚才发布的版本0.1.0。如果两者不匹配,就会报错。
    3. s.summary 和 s.description – 这两个变量最终会显示在 Cocoapods 页面上。请确保 description 比 summary 更长,否则将会报错。description不是必须的。
    4. s.homepage – 这是 Pod 源代码的 URL。
    5. s.author – 开发者信息,开发者名字和邮箱。
    6. s.source_files – 这是最重要的参数。不是所有Github项目中所有文件都需要提交到CocoaPods里,项目中可能有一些Demo、图片啊等,提交到CocoaPods的只需要源码,就是别人使用时最少所需的代码。
      例如,我需要提交的是ARFPSStatus/ARFPSStatus.swift文件,s.source_files就是ARFPSStatus/ARFPSStatus.swift,或者之后如果再在ARFPSStatus/目录中添加其他文件,s.source_files就可以是ARFPSStatus/*
      当然,还可以是其它一些形式。
      ARFPSStatus/*.swift
      ARFPSStatus/*.{swift,plist}

    Podspec文件的详细语法规则可查看官网的Podspec Syntax Reference

    验证项目

    CocoaPods 需要验证项目有没有错误

    • pod lib lint
    $ pod lib lint
    
     -> ARFPSStatus (0.1.0)
        - WARN  | [iOS] license: Unable to find a license file
        - WARN  | xcodebuild:  /Users/andyron/myfield/github/ARFPSStatus/ARFPSStatus/ARFPSStatus.swift:91:17: warning: variable 'label' was never mutated; consider changing to 'let' constant
    
    [!] ARFPSStatus did not pass validation, due to 2 warnings (but you can use `--allow-warnings` to ignore them).
    You can use the `--no-clean` option to inspect any issue.
    
    

    如果想忽略警告,可使用--allow-warnings

    • $ pod lib lint --allow-warnings

    发布

    • 创建 Trunk 账号
      关于Trunk可以查看为什么做 Trunk这篇文章
      创建 Trunk 账号很简单,只要一个邮箱。
      pod trunk register rongming.2008@163.com
      邮箱会收到一封确认邮件,确认成功:
    • 推送代码到Pod
      pod trunk push ARFPSStatus.podspec
      当然也可使用pod trunk push ARFPSStatus.podspec --allow-warnings来忽略一些不必要的警告。
      成功后:
    $ pod trunk push ARFPSStatus.podspec 
    Updating spec repo `master`
    
    --------------------------------------------------------------------------------
     🎉  Congrats
    
     🚀  ARFPSStatus (0.1.0) successfully published
     📅  September 28th, 11:33
     🌎  https://cocoapods.org/pods/ARFPSStatus
     👍  Tell your friends!
    --------------------------------------------------------------------------------
    

    使用新发布的代码

    发布成功和可能需要一段时间才能使用,可以到Cocoapods上查询。

    • 项目的Podfile文件中添加ARFPSStatus,并安装。
    target 'FPSDemo' douse dynamic frameworks
      use_frameworks!
    
      pod "ARFPSStatus" 
    
    end
    
    • Pods项目会多出ARFPSStatus目录,里面的Support Files目录不是我添加的,是Cocoapods自动添加的一些相关文件。

    参考:
    基于 Swift 创建 CocoaPods 完全指南
    Podspec Syntax Reference

    相关文章

      网友评论

        本文标题:向CocoaPods发布代码

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