文档章节

发布自己的CocoaPods库

aron1992
 aron1992
发布于 2017/04/01 11:40
字数 946
阅读 31
收藏 1

自己写了一个库,发了点时间研究下发布到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官方文档

© 著作权归作者所有

aron1992

aron1992

粉丝 65
博文 90
码字总数 164172
作品 0
厦门
程序员
私信 提问
清华大学 CocoaPods 镜像使用帮助

清华大学镜像网址 https://mirrors.tuna.tsinghua.edu.cn/ CocoaPods 镜像使用帮助 CocoaPods 是一个 Cocoa 和 Cocoa Touch 框架的依赖管理器,具体原理和 Homebrew 有点类似,都是从 GitHub...

who7708
01/25
78
0
CocoaPods的安装使用和常见问题

原文:http://www.jianshu.com/p/6e5c0f78200a 一、什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出...

lingfeng72
2015/11/09
293
0
CocoaPods安装和使用及问题:Setting up CocoaPods master repo

目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用CocoaPods? 场景1:利用CocoaPods,在项目中导入AFNetworking类库 场景2:如何正确编译运行一个包含CocoPods类库的项目 CocoaP...

whj
2014/03/07
73.6K
1
使用 CocoaPods 管理依赖库

文本首发于Ryan’s Zone 本篇内容将介绍Mac和iOS开发中必备的一个依赖库管理工具CocoaPods。 CocoaPods是什么 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest、AFN...

孙启超
2014/04/13
182
0
CocoaPods安装和使用教程

Code4App 原创文章。转载请注明出处:http://code4app.com/article/cocoapods-install-usage 目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用CocoaPods? 场景1:利用CocoaPods...

嘻哈开发者
2014/10/15
28
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部