美文网首页
制作CocoaPods过程(二)

制作CocoaPods过程(二)

作者: ravenLu | 来源:发表于2018-09-06 11:48 被阅读0次

在开发过程中,经常会使用到第三框架,我们通过一个pod install命令,很方便的就将第三方框架加到我们自己的项目中。

如果我们也想将自己写的组件或库开源出去,让别人也可以通过pod install命令安装自己的框架该怎么做呢?下面,我就教大家一步一步的将自己的pods发布到CocoaPods 中。如果你现在对CocoaPods还不太了解,推荐你看一看这篇文章:用CocoaPods做iOS程序的依赖管理 

近期研究CocoPods的制作,本文章为记录其制作过程以及本人所遇到的问题,以及解决方法。本文章记录本人制作的过程,如有可以修正之处,欢迎留言指教。

制作过程参考:

1.如何发布自己的开源框架到 CocoaPod 

2.CocoaPods 1.1.0上传遇到swift问题 

3.CocoaPods详解之 -- 制作篇 

主要过程如下:

一、创建自己的git仓库 

二、clone仓库到本地

三、向本地git仓库中添加创建Pods依赖库所需文件

四、提交修改文件到github

五、上传podspec文件到CocoaPods官方仓库中

六、查看我们自己创建的Pods依赖库

七、删除提交到cocoapods上的框架

篇章较长,本次介绍第三、四步,全部篇章如下:

制作CocoaPods过程(一)

制作CocoaPods过程(二)

制作CocoaPods过程(三)

制作CocoaPods过程(四)问题汇总



三、向本地git仓库中添加创建Pods依赖库所需文件

打开终端,cd 进入步骤二clone的文件夹路径下,输入指令pod spec create ‘’你的命名‘’,我的命名与文件夹名一致。

 pod spec create demo.podspec

“TextEdit” 打开该文件显示如下(截图部分截图):

该文件是ruby文件,里面的条目都很容易知道含义。

其中需要说明的几个参数:

s.name是我们库的名称,s.version是库原代码版本号,s.summary是对我们库的一个简单的介绍,s.homepage声明库的主页,s.license是所采用的授权版本,s.author是库的作者。s.platform是我们库所支持的软件平台,这在我们最后提交进行编译 时有用。s.source声明原代码的地址。步骤一已经托管在github上,所以这里将地址copy过来就行了。

对于很多第三方库而言,在发布的时候都会打上一个tag,如版本0.0.1就会打上一个名为0.0.1的tag

我在github上面打的tag步骤为:

填写相关release信息

我这里还是使用的tag,所以我这里就是这样的:

s.source = { :git => "https://github.com/......git", :tag => "#{s.version}" }

以后我们的库有新版本时,我们可以修改相应的version和source。

s.source_files声明了我们库的源代码的位置,所以这个地方不能填错了。

例如目录结构(此处摘自其他朋友写的简书说明,如何发布自己的开源框架到CocoaPods ):

所以工程根目录下的HUPhotoBrowse文件夹才是库的原代码目录。

s.source_files  ="HUPhotoBrowser","HUPhotoBrowser/**/*.{h,m}"

目录的层级关系一定要跟代码库的保持一致。这里前一部分可以不用的,因为我这里后一部分的HUPhotoBrowser/**与前面是一致的,这个指定的目录下的文件都会进行编译。如果该目录下还有一些资源文件(如图片等),这些文件并不需要进行编译。可以使用s.resourcs声明。*.{h,m}是一个类似正则表达式的字符串,表示匹配所有以.h和.m为扩展名的文件。

s.framework声明了所依赖的核心库,我这里只用到了UIKit,所以是这样的:

s.framework  ="UIKit"

如果你的项目中依赖多个库,可以使用

s.frameworks ="SomeFramework","AnotherFramework"

当然,我们开发的库中也可能还依赖第三方库,例如JSONKit,那么,就可以做如下声明:

s.dependency "JSONKit", "~> 1.4"

如果有多个需要填写多个s.dependency。

附上一份文件,可作为参考,也可自行请参考其他人发布的项目,获取下来参考他们如何编辑(比如:Lede-Inc/LDBusMediator ):

Pod::Spec.new do |s|

s.name = "POD名字"

s.version = "0.0.2"

s.summary = "说明."

s.description = <<-DESC

                          描述内容

                          DESC

s.license = {:type => 'MIT', :file => 'LICENSE'}

s.homepage = 'https://github.com/...git的主页地址'

s.author = { "作者" => "作者" }

s.source = { :git => "https://github.com/步骤一创建的git地址", :tag => "#{s.version}" }

s.platform = :ios, '9.0'

s.ios.deployment_target = '9.0'

s.source_files = '项目名字/发布的文件夹名字/*.{h,m}'

# s.resource = "*.png"   备注:如果有引用图片

# s.resource_bundles = { '你的项目名' => ['文件所在文件夹/*.{xib}'] }     备注:如果有引用xib  , storyboard;以逗号分开

s.requires_arc = true

end

编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行命令:

XX为你制作的库的命名

pod spec lint  XX.podspec

如果有引用到库framwork或C语言库的话必须使用

pod spec lint XX.podspec --use-libraries // 验证

pod spec lint XX.spec.podspec --verbose // 可以打印更多信息

pod spec lint XX.podspec --allow-warnings //忽略警告 ,如果你的项目存在警告

pod spec lint XX.podspec --use-libraries //引用到第三方 

pod spec lint XX.podspec --verbose (打印错误信息)

当看到 “你的PodName” passed validation.时,说明验证通过了

验证podspec文件,遇到几个问题不能通过,文章最后把本人所遇到的问题以及解决方式说明一下,希望能帮助到遇到同样问题的朋友。



四、提交修改文件到github

在步骤三中增加很多新文件,需要将它们提交到github仓库中去。我使用SourceTree  commit的。

根据步骤三内容,为pod添加版本号并打上tag。然后执行pod验证命令

pod lib lint

pod lib lint --allow-warnings //忽略警告 ,如果你的项目存在警告

如果一切正常,这条命令执行完后会出现下面的输出:

你的Pod名字 passed validation.

到此,pod验证就结束了。

需要说明的是,在执行pod验证命令的时候,打印出了任何warning或者error信息,验证都会失败!如果验证出现异常,打印的信息会很详细,大家可以根据对应提示做出修改。

相关文章

网友评论

      本文标题:制作CocoaPods过程(二)

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