iOS组件化之通过CocoaPods发布

Posted WeaterMr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS组件化之通过CocoaPods发布相关的知识,希望对你有一定的参考价值。

制作本地组件工程

1.随便建立一个简单的工程

2.打开当前的工程的目录文件,新建一个文件夹 Lib

3.cd到当前的Lib文件夹下
执行:pod lib create MZSNetworking
这里的MZSNetworking即为我们此次要做的组件。


按照上面的操作步骤,当显示如上图即成功。
4.打开Lib文件夹将看到下面的文件结构。

这里的Example是自动生成的一个demo。
我们要创建的组件,将放到上图选中的文件夹中,将对应的ReplaceMe.m删除即可
到此我们的本地的组件库创建完成。

托管远程仓库

1.先在远端 码云 或者githup 上新建里一个空的仓库

这里选择公开,证书选择MIT。
2.将仓库clone到本地,然后将上面创建好的本地组件拷贝到当前从网络clone的仓库中。

3.在添加到跟踪文件之前,先对.podspec文件做一些相关的设置。

Pod::Spec.new do |s|
  s.name             = 'MZSNetworking' //对应的名称
  s.version          = '1.0.4'         //版本号
  s.summary          = 'MZSNetworking for demo' //描述

# 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://gitee.com/mazhengshui/mznew-work'
  
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          =  :type => 'MIT', :file => 'LICENSE' 
  //----------邮箱---------------------//
  s.author           =  'xiaoma' => '2455419909@qq.com' 
  //----------仓库地址 和上面的区别 .git ---------------------//
  s.source           =  :git => 'https://gitee.com/mazhengshui/mznew-work.git', :tag => s.version.to_s 
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '9.0'

  s.source_files = 'MZSNetworking/Classes/**/*'
  
  # s.resource_bundles = 
  #   'MZSNetworking' => ['MZSNetworking/Assets/*.png']
  # 

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

  • s.version 版本号信息,一定要和后面打的tag保持一致,不然无法上传到CocoaPods
  • s.homepage 更换为你的托管仓库地址
  • s.source 更换为你的托管仓库地址 以.git 结尾。
    3.git add . 或者通过 source tree去管理本地代码。打要发布版本的tag也即是别人通过CocoaPods 继承使用的版本号。并推送到远程仓库。注意:这里的tag和s.version 要保持一致

    4.发布你当前远程的版本。

发布到CocoaPods支持网络集成

1.发布前检查发布的版本是否合法 通过命令 pod lib lint --verbose,当出现下图表示可以发布到CocoaPods上

2.如果没有CocoaPods账号需要注册账号,pod trunk register 后加自己的邮箱 加昵称 。同时会有一封邮件发送到你的邮箱,点开链接即可。

如果不带昵称会报错
查看是否注册成功 pod trunk me

3.一切就绪,将对应的工程推送到CocoaPods ,即工程下的.podspec文件。出现图版本信息即发布成功。

pod trunk push MZSNetworking.podspec --verbose


到此整个组件的制作,远程仓库的托管,发布到CocoaPods一系列流程已完成。

报错处理

1.当你的电脑安装多个Xcode 需要选择你默认的xcode 路径。点击Xcode - Preferences - Locations

这里的Command Line tools 必须选择。

2.当你使用pod search 无法搜索到时 删除本地缓存

rm ~/Library/Caches/CocoaPods/search_index.json

如果还不行需要等待一会,可能网络延时。
3.当你的版本信息本地和托管仓库不同步会报一下错误。
检查版本信息,自己打的tag本地和网络是否同步。当前版本的tag是否发布。

以上是关于iOS组件化之通过CocoaPods发布的主要内容,如果未能解决你的问题,请参考以下文章

iOS组件化-利用CocoaPods拆分项目和私有化

iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布

iOS-组件化开发之私有库制作与版本更新(持续更新)

iOS-组件化开发之私有库制作与版本更新(持续更新)

iOS开发之进阶篇(15)—— CocoaPods

iOS之深入解析Cocoapods的工作原理与源码分析