热门标签 | 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…



推荐阅读
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • iOS 面试实战:15 道经典面试题及解析
    本文精选了15道iOS面试题,并提供了详细的解答思路。旨在帮助开发者更好地准备面试,避免因准备不足而导致的紧张和焦虑。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
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社区 版权所有