iOS-将代码发布到CocoaPods(trunk方式)

栏目: IOS · 发布时间: 5年前

内容简介: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
复制代码

输出下列信息即表示注册成功:

iOS-将代码发布到CocoaPods(trunk方式)

三、配置podspec

3.1添加podspec文件

podspec 文件就相当于你的项目简介,可以让 cocoapods 搜索引擎知道作者名、项目概述、版本号、源代码地址、依赖库等信息,因此 cocoapods 上的每个项目都会有一个 podspec 描述文件。 cocoapodsGithub 上通过一个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 内容的修改。 如果输入终端执行完之后,显示的是如下信息:

iOS-将代码发布到CocoaPods(trunk方式)

那么恭喜你,我们可以进行下一步了。

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 文件的时候务必要小心谨慎才是。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

让创意更有黏性

让创意更有黏性

[美] 奇普·希思、[美] 丹·希思 / 姜奕晖 / 中信出版社 / 2014-1-8 / 49.00元

你或许相信在太空中唯一能看到的人工建筑就是万里长城,可乐能腐蚀人体骨骼,我们的大脑使用了10%;与此同时,你却记不得上周例会上领导的安排,昨天看过的那本书里写了什么,上次参加培训的主要内容…… 为什么? 这就引发出《让创意更有黏性》的核心问题:什么样的观点或创意具有强有力的黏性,能被他人牢牢记住? 国际知名行为心理学家希思兄弟根据大量的社会心理学研究案例,揭示了让创意或观点具有黏......一起来看看 《让创意更有黏性》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具