热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Cocoapods发布封装库

Cocoapods一般用来管理第三方库,当我们自己封装了一个功能模块时也可以使用Cocoapods发布给其他人使用,以下是我按照官方教程实际操作的流程。

Cocoapods 一般用来管理第三方库,当我们自己封装了一个功能模块时也可以使用 Cocoapods 发布给其他人使用,以下是我按照官方教程实际操作的流程。

提交到 GitHub

假设我们已经完成了一个功能模块的封装,以 HelloPods 为例。首先,我们要在 GitHub 上创建一个名为 HelloPods 的仓库,接着我们要将本地封装好的代码提交到 GitHub 上。具体操作如下:

  1. 打开命令行工具 cd 到 HelloPods 目录
  2. 生成 Readme 文件,echo "# HelloPods" >> README.md
  3. 初始化 git,git init
  4. 提交到本地 git,git add . git commit -m 'commit'
  5. 添加远程仓库,git remote add origin https://github.com/hiXgb/HelloPods.git
  6. 提交到远程仓库,git push -u origin master
  7. 添加 tag,git tag 0.0.1 git push --tag

执行完以上操作后我们就成功将代码提交到了 GitHub 上,接下去要做的是发布到 Cocoapods 上。

发布到 Cocoapods

首先,我们执行 pod spec create 生成 HelloPods.podspec 文件,生成的模板文件有大量注释,我们只需要其中一部分内容,整理后的内容如下:

Pod::Spec.new do |spec|spec.name = 'HelloPods'spec.version = '0.0.1'spec.license = { :type => 'MIT' }spec.homepage = 'https://github.com/hiXgb/HelloPods'spec.authors = { 'xgb' => 'xieguobiyi@gmail.com' }spec.summary = "Learn about creating Podspec's and the Spec repo."spec.source = { :git => "https://github.com/hiXgb/HelloPods.git", :tag => "0.0.1" }spec.source_files = '*.{h,m}'spec.requires_arc = true
end

HelloPods.podspec 文件编辑完成后执行 pod spec lint 验证 podspec 文件是否合法,结果如下:

验证通过后需要在 Cocoapods 上注册 trunk,执行

pod trunk register xieguobiyi@gmail.com 'xgb'

然后查收邮箱点击链接即可完成注册,注册完成后可以通过 pod trunk me 查询注册信息

然后再执行

pod trunk push HelloPods.podspec --allow-warnings

不出意外的话我们能看到如下结果

至此我们就完成了库的发布,后续就可以按照其他第三方库一样的用法来使用我们自己的库了~

添加 subspec

如果一个库有多个子模块,我们可以通过添加 subspec 使结构更加清晰。假设 HelloPods 下有两个子模块,一个 Util,一个 Model,我们首先修改 HelloPods.podspec 文件,修改后的内容如下:

Pod::Spec.new do |spec|spec.name = 'HelloPods'spec.version = '0.0.3'spec.license = { :type => 'MIT' }spec.homepage = 'https://github.com/hiXgb/HelloPods'spec.authors = { 'xgb' => 'xieguobiyi@gmail.com' }spec.summary = "Learn about creating Podspec's and the Spec repo."spec.source = { :git => "https://github.com/hiXgb/HelloPods.git", :tag => "0.0.3" }spec.source_files = '*.{h,m}'spec.requires_arc = truespec.subspec 'Util' do |util|util.source_files = 'Util/*.{h,m}'endspec.subspec 'Model' do |model|model.source_files = 'Model/*.{h,m}'endend

修改完成后再重复前面的步骤,将子模块都先提交到 GitHub 上,然后修改 tag 为 0.0.3,接着再执行 pod trunk push HelloPods.podspec --allow-warnings 将修改后的内容发布到 Cocoapods trunk 上,发布完成后我们再执行 pod search 'HelloPods' 结果如下:

遇到的问题

swift 版本不对

[!] The validator for Swift projects uses Swift 2.3 by default, if you are using a different version of swift you can use a .swift-version file to set the version for your Pod. For example to use Swift 3.0, run:
echo "3.0" > .swift-version.

执行 echo "3.0" > .swift-version 即可解决

没有创建 tag

warning: Could not find remote branch 0.0.1 to clone.
fatal: Remote branch 0.0.1 not found in upstream origin

执行

git tag 0.0.1
git push --tag

podspec 文件配置不对

ERROR | File Patterns: File patterns must be relative and cannot start with a slash (source_files).

这个错误主要是实际文件目录和配置文件里的没有匹配上,需要根据实际项目文件结构具体配置,在上述例子里的配置是

spec.source_files = '*.{h,m}'

成功发布到 Cocoapods trunk 上但 pod search 不到

可以依次尝试以下几种方法:

  • 清除本地的 Cocoapods 缓存,执行

rm -rf ~/Library/Caches/CocoaPods

  • 修改 tag 重新发布一遍
  • 新建一个测试工程,然后新建 Podfile,其中使用到发布成功的库,执行 pod update

总结

以上就是我跟着教程实际操作的流程和遇到问题的记录,最重要的还是要自己动手操作一遍,希望大家在操作过程中也能有收获,enjoy~

参考资料

  • guides.cocoapods.org/making/spec…



推荐阅读
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 前言本篇为大家总结社区多人合作常见的场景和对应的git操作命令。本篇非新手教程,阅读本篇前需具备Git基础知识。Git入门教程请参考https://www ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • 编写一个简单的内核驱动模块时报错 “/lib/modules/3.13.032generic/bulid: 没有那个文件或目录。 停止。”...
    编写一个简单的内核驱动模块1staticinthello_init()2{3printk(“hello,Iaminkernelnow\n”);4return0;5}6voidadd ... [详细]
author-avatar
woshishl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有