美文网首页iOS开发实用技术
发布自己的CocoaPods库

发布自己的CocoaPods库

作者: aron1992 | 来源:发表于2017-12-09 21:04 被阅读90次

自己写了一个库,发了点时间研究下发布到cocosPods的步骤,总结在下面

发布的库链接 YTTHpplePlus

命令行创建Pods库

pod lib create {你的项目名称}
eg. 
pod lib create YTTHpplePlus3333

根据提示,输入项目的一些配置信息就会生成一个Pods模板工程,完了之后,打开使用命令行创建的项目,结构如图所示:

PodLib创建的项目目录结构
Example就是Pods库对应的测试工程,Classes文件夹用于存放项目源文件。

上传项目到Git服务器

把podspec种子文件所在的目录当做根目录推送项目到Git服务器上
下面是我把项目推送到GitHub上的截图:

推送项目到GitHub上截图

添加Git项目的TAG版本

可以通过添加标签或者GitHub上直接添加release版本的方式添加一个Tag
添加Tag之后,可以在GitHub上看到库对应的发布版本

TAG对应的release版本

配置podspec种子文件,下面是我的CocoaPods项目使用的配置,不同的项目会有差别

Pod::Spec.new do |s|
  s.name             = 'YTTHpplePlus'
  s.version          = '0.1.4'  #Pods库的版本号,需要是发布过的Tag版本中对应的一个
  s.summary          = 'Lightweight And Powerful XML/HTML Parser Util' #说明
  s.description      = <<-DESC
Lightweight And Powerful XML/HTML Parser Util #说明
                       DESC
  s.homepage         = 'https://github.com/flypigrmvb/YTTHpplePlus'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'flypigrmvb' => '862709539@qq.com' }
  s.source           = { :git => 'https://github.com/flypigrmvb/YTTHpplePlus.git', :tag => s.version.to_s } #项目所在的Git地址,平时我们拉取Git项目的那个地址
  s.ios.deployment_target = '8.0'
  s.source_files = 'YTTHpplePlus/Classes', 'YTTHpplePlus/Classes/**/*.{h,m}' #源文件

    s.library = 'xml2' #依赖的系统库,这里依赖的是libxml这个库
    s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' } #配置HeaderSearchPaths,libxml这个库需要这么配置
    s.requires_arc = true
    s.module_name = "YTTHpplePlus"

end

pods验证Git项目

使用下面的命令验证库项目的正确性

pod trunk push YTTHpplePlus.podspec --allow-warnings
Updating spec repo `master`

验证不通过会有类似的提示:

[!] The spec did not pass validation, due to 1 error.

需要修改重写提交验证,在 坑和解决方案 这条会讲到一些的解决方案

创建CocoaPods账号

CocoaPods账号用于上传我们创建好的库项目的podspec种子文件

pod trunk register {邮箱} '{昵称}' --description='描述信息'
eg.
pod trunk register xxx@foxmail.com 'xxx' --description='xxx'

成功会有类似的提示信息

[!] Please verify the session by clicking the link in the verification email that has been sent to xxx@foxmail.com

验证了邮箱之后就可以继续下一步了

上传podspec种子文件到CocoaPods服务器

验证通过了之后,就可以上传podspec种子文件到CocoaPods服务器了,这个步骤还会做一个最终的验证,可能还会有些问题,需要修改重写提交验证,在 坑和解决方案 这条会讲到一些的解决方案,使用如下命令提交到cocoapods服务器

pod trunk push YTTHpplePlus.podspec --allow-warnings
Updating spec repo `master`

坑和解决方案

  • podspec配置问题
- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

如果使用命令行创建项目,并且把代码放在Classes目录下面,那么配置是没问题的,出问题是因为我没有把podspecs文件所在的目录当做根目录上传到Git服务器上,source_files的配置是YTTHpplePlus/Classes', 'YTTHpplePlus/Classes/**/*.{h,m},所以是从 项目根目录/YTTHpplePlus/Classes 下查找源文件,如果podspecs文件被移动过,那么就会有问题,导致这个错误

  • pods项目编译问题
    - ERROR | xcodebuild:  /Users/aron/Library/Developer/Xcode/DerivedData/App-cehsvothtapdepeetbqyvvdeexuu/Build/Products/Release-iphonesimulator/YTTHpplePlus/YTTHpplePlus.framework/Headers/XPathQuery.h:10:9: error: include of non-modular header inside framework module 'YTTHpplePlus.XPathQuery' [-Werror,-Wnon-modular-include-in-framework-module]

项目中使用到了libxml这个系统的库,我在项目的头文件中有引入libxml的头文件导致了这个问题,可以查看这个解决办法


参考文档

把自己Github上的代码添加Cocoapods支持
cocoapods官方文档

相关文章

  • 制作CocoaPods

    iOS管理第三方库大多使用CocoaPods,如果需要实现组件化或者发布自己的开源库/私有库到CocoaPods,...

  • 发布自己的CocoaPods库

    参考链接如下: https://www.jianshu.com/p/49ddbd1d436a 1. 创建.pods...

  • 发布自己的CocoaPods库

    自己写了一个库,发了点时间研究下发布到cocosPods的步骤,总结在下面 发布的库链接 YTTHpplePlus...

  • 为自己的库增加CocoaPods

    添加CocoaPods推荐为自己的库添加CocoaPods如何写一个pod并发布到CocoaPods使用Cocoa...

  • 开源cocopods spec

    相关参考链接:手把手教你发布自己的cocoapods开源库【原】iOS:手把手教你发布代码到CocoaPods(T...

  • 发布自己的iOS代码到cocopods spec

    发布自己的iOS代码到cocopods spec 参考链接: 手把手教你发布自己的cocoapods开源库 在遇到...

  • Cocoapods 发布自己的公有库

    四步走: 一、封装自己的轮子 创建自己的工程,编写代码。 pod lib create 工程名称 给自己的项目打上...

  • 发布自己的库到CocoaPods

    1. 准备CocoaPods环境,此处省略。 2. 注册trunk,这个是使用CocoaPods上传自己代码的关键...

  • 发布自己的库到CocoaPods

    本文主要介绍如何自己写一个pod,然后注册到CocoaPods上,并将代码放到Github上供别人下载。这基本上是...

  • 发布自己的库到cocoapods

    准备:首先更新了用trunk之后,CocoaPods 需要0.33版本以上的,用pod --version查看 下...

网友评论

    本文标题:发布自己的CocoaPods库

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