内容简介:Cocoapods是当前iOS开发最流行的版本依赖工具,开发者使用Cocoapods进行项目的依赖管理会为开发节省不少时间。相信大家都尝试过通过Cocoapods管理自己的项目,但如何将自己开发的代码发布到Cocoapods上让别人也可以搜索使用呢?下面就将介绍trunk方式接入的方法,以及在过程中可能遇到的坑。接入的第一步就是要注册trunk,在注册trunk之前需要确认当前的CocoaPods版本必须在0.33以上。若低于该版本请打开Terminal使用ruby的gem命令更新pod:若OSX版本在10
Cocoapods是当前iOS开发最流行的版本依赖工具,开发者使用Cocoapods进行项目的依赖管理会为开发节省不少时间。相信大家都尝试过通过Cocoapods管理自己的项目,但如何将自己开发的代码发布到Cocoapods上让别人也可以搜索使用呢?下面就将介绍trunk方式接入的方法,以及在过程中可能遇到的坑。
二、注册
接入的第一步就是要注册trunk,在注册trunk之前需要确认当前的CocoaPods版本必须在0.33以上。若低于该版本请打开Terminal使用 ruby 的gem命令更新pod:
sudo gem install cocoapods 复制代码
若OSX版本在10.11以上请使用以下安装命令
sudo gem install -n /usr/local/bin cocoapods 复制代码
版本更新结束之后我们开始注册trunk:
pod trunk register <邮箱> <'用户名'> --description='macbook pro' 复制代码
其中邮箱是最重要的,因为注册之后pod会往你的邮箱发一封激活邮件,所以邮箱名就当相当于你的trunkID了。至于用户名个人感觉写不写都不太有所谓,--description参数是cocoapods推荐添加的,若以后你在别的设备上登录了trunk方便判断终端信息,也是一个可有可无的参数。点击邮箱中的注册链接,使用下列命令就可以向trunk服务器查询到自己的注册信息。
pod trunk me 复制代码
输出下列信息即表示注册成功:
三、配置podspec
3.1添加podspec文件
podspec
文件就相当于你的项目简介,可以让 cocoapods
搜索引擎知道作者名、项目概述、版本号、源代码地址、依赖库等信息,因此 cocoapods
上的每个项目都会有一个 podspec
描述文件。 cocoapods
在 Github
上通过一个repo来管理所有支持 cocoapods
的代码 github.com/CocoaPods/S… 。 如何创建一个podspec文件呢?我们可以通过:
pod spec create <name> 复制代码
来创建一个podspec文件,但官方的spec文件写的非常冗余,看起来不够简明,如果是第一次写podspec官方的spec文件还是可以去看一下的,毕竟文档注释比较详细。最终还是建议参考github上各种开源库上的podspec文件来进行自身项目的podspec文件配置,在此分享出自己编辑的podspec文件来供大家学习交流。
Pod::Spec.new do |s| s.name = "ipaynowplugin" s.version = "1.7.3.42" s.summary = "ipaynowplugin SDK" s.description = <<-DESC Help developer to quickly intergrate variety of payment methods DESC s.homepage = "http://www.ipaynow.cn" s.license = "MIT" s.author = { "Hstripe" => "huangrui@ipaynow.cn" } s.platform = :ios, '6.0' s.source = { :git => "https://github.com/Hstripe/libipaynow.git", :tag => s.version } s.default_subspec = 'Core' s.requires_arc = true s.subspec 'Core' do |core| core.source_files = "lib/*.h" core.public_header_files = "lib/*.h" core.vendored_libraries = "lib/*.a" core.resource = "lib/*.bundle" core.frameworks = "CoreGraphics", "CoreTelephony","QuartzCore","SystemConfiguration","Security","Foundation","UIKit" core.ios.library = 'z', 'sqlite3.0','c++', 'stdc++' core.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' } end s.subspec 'Alipay' do |ali| ali.ios.vendored_frameworks = "lib/Channels/AliPayPlugin/AlipaySDK.framework" ali.resource = "lib/Channels/AliPayPlugin/AlipaySDK.bundle" ali.dependency "ipaynowplugin/Core" ali.frameworks = "CoreMotion" end s.subspec 'Weixin' do |wx| wx.ios.vendored_libraries = "lib/Channels/WechatPlugin/*.a" wx.source_files = "lib/Channels/WechatPlugin/*.h" wx.public_header_files = "lib/Channels/WechatPlugin/*.h" wx.dependency "ipaynowplugin/Core" end s.subspec 'Unionpay' do |up| up.vendored_libraries = 'lib/Channels/UPPayPlugin/*.a' up.source_files = 'lib/Channels/UPPayPlugin/*.h' up.dependency 'ipaynowplugin/Core' end s.subspec 'ApplePay' do |ap| ap.source_files = 'lib/Channels/UPApplePay/*.h' ap.public_header_files = 'lib/Channels/UPApplePay/*.h' ap.vendored_libraries = 'lib/Channels/UPApplePay/*.a' ap.dependency 'ipaynowplugin/Core' ap.frameworks = "PassKit" end end 复制代码
接下来对几个参数进行简要的说明:
s.name 就是你的项目名了,通过之后可以使用pod search命令搜索到; s.version 项目当前的版本号; s.summary 项目的概要描述; s.description 项目的详细描述; s.license 许可文件,这个是cocoapods必须要求若没有会无法通过验证; s.source 项目源代码位置,一般就是一个github地址; s.default_subspec 项目默认加载的子包,由于我的项目是由多个包构成的所以我会添加这项,若项目只有一个包则不用填写这个参数; 复制代码
以下这几个参数比较重要:
core.source_files 项目主要文件; core.public_header_files 暴露出的头文件; core.vendored_libraries 项目封的静态库(根据项目类型:开源、闭源,没有可不填); core.resource 项目用的资源文件(图片之类的); core.frameworks 依赖的系统的framework框架 ; core.ios.library 依赖的系统的lib库文件; 复制代码
完成以上参数配置之后,接着进行下一步
3.2 本地检查
完成 podspec
描述文件的参数配置之后,最好是先进行 podspec
文件的本地检查,命令如下:
pod lib lint --verbose 复制代码
verbose的作用是输出过程中的调试信息方便我们查错,若有错误的话根据 Build Failed
中的错误信息进行 podspec
内容的修改。 如果输入终端执行完之后,显示的是如下信息:
那么恭喜你,我们可以进行下一步了。
3.3 通过Trunk push podspec文件
1.在进行trunk push之前,首先确保你已经把你的项目文件上传到 Github
上了,若还没上传源码,可以用终端 cd
到项目文件夹执行一下操作上传代码到 Github
git add . git commit -m "版本内容" git push origin master 复制代码
2.为你上传上去的代码打上tag标签,使得 cocoapods
可以更精确的查找到你的版本
git tag 'tagNum' git push --tags 复制代码
所有准备工作完成之后,就开始最核心的工作trunk push了
pod trunk push yourProjectName.podsepc --verbose 文件名称请修改成自己的podspec名称 复制代码
上面的代码做了三件事: 1、验证你的podspec文件是否合法,在trunk方式之前我们已经用了“pod lib lint”命令进行验证; 2、上传podspec文件到trunk服务器,最终还是会上传到 https://github.com/CocoaPods/Specs
中; 3、将你上传的podspec文件转成json格式文件。
通过本地 pod lib lint
的文件一般而言都不会出什么问题,发生概率最大的问题可能就是由于网不给力,导致连接 GitHub
困难。上传成功之后,就可以使用 pod search
命令来搜索自己的项目了。
如果 pod search
不到自己的项目,就需要再手动 pod setup
一次来同步自己本地的spec repo,这个过程总是漫长且带有痛苦的,所以建议更新的时候挂着VPN。
四、后续项目的升级
当你的项目做出了修改之后,当然希望cocoapods中的版本也进行更新。此时就需要更新 podspec
描述文件了,将 podspec
文件改成符合你当前版本的需求之后。还需要给你 GitHub
上的版本打上tag,而且一定要和 podspec
中的 s.version
一致。
顺带一提的是 podspec
是没有“后悔药”功能的,你一旦发现你当前版本与 podspec
描述文件填写不符,你是无法修改当前版本的 podspec
的只能提到下个版本中进行修改,这也是一个比较坑的地方,因此在填写 podspec
文件的时候务必要小心谨慎才是。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- git合并代码方式
- 三个常见的代码性能优化方式
- 使用 C# 代码创建快捷方式文件
- 让 Python 代码运行更快的最佳方式!
- Monorepo——大型前端项目的代码管理方式
- 特征工程:类别特征的常见处理方式(含代码)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。