折腾cocoaPods, 创建自己的依赖库

制作集成了一个认证,分享,支付的库,也上载到了github,之前一直想做一个自己的pod库,根据网上的教程,走了一些坑,总算折腾完了(写这个文章的时候其实应该还在部署,有点小激动)

1.Github?

? ? ?创建自己的Repository,我创建了QShare,然后从本地上传到github上, 这些步骤就不在这里赘述了,经常跑github的同学应该都会。

2.建tag

? ? ?打开终端,cd 到项目QShare目录下,

git tag '1.0.0'//这个命令是本地创建tag,1.0.0版本

git push --tags // 这个命令是把tag推送到远端。

3.创建项目的podspec文件

现在终端还是在项目QShare的目录下,执行以下命令

$ pod spec create QShare

在本地目录下同时也生成了QShare.podspec文件

$ vim QShare.podspec

编辑podspec文件,会发现这个文件已经生成了部分的字段

以下是编辑好的podspec 文件 做一些解释

Pod::Spec.new do |s| ? ? ? ? ? ? ? ? ? ? ? #spec开始 ?s作为spec的别名

? ? s.name? ? ? ? = "QShare" ? ? ? ? ? ? ? #项目名称

? ? s.version? ? ? = "1.0.0" ? ? ? ? ? ? ? ? #版本号,

? ? s.summary? ? ? = "Gather Some Auth Share Pay." ? ? ? ?#简介

? ? s.homepage? ? = "https://github.com/quankevin/QShare" ? ? ? ? ? #github,或者别的开源代码地址

? ? s.license? ? ? = "MIT" ? ? ? ?#遵循的开源协议

? ? s.author? ? ? ? ? ? = { "quankevin" => "quankevin@163.com" } ? ? ? #作者

? ? s.social_media_url? = "http://weibo.com/quankevin" ? ? ? ? #作者联系

? ? s.platform? ? = :ios, "7.0" ? ?#对应的ios平台

? ? s.source? ? ? = { :git => "https://github.com/quankevin/QShare.git", :tag => "#{s.version}" } ? ?#代码的git源地址 ? ?这里的tag=>"#{s.version}" ? 引用了上面的s.version ?如果,在打tag的时候是用的 ?git tag 'v1.0.0' ? ? 那么这里需要使用 ? tag => "v#{s.version}"?

? ? s.frameworks? = "SystemConfiguration","UIKit","CoreTelephony" ? ? ? ? #项目需要用到的ios framework?

? ? s.libraries? ? = "stdc++", "sqlite3","z" ? ? ? ? ? ? ? ?#项目需要用到的库

? ? s.requires_arc = true ? ? ? ? ? ? #arc

? ? s.public_header_files = "QShare/QShareHeader.h" ? ? ? ? ?#公用的一些头文件


? ? s.subspec 'Core' do |core| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#定义一个Core

? ? ? ?core.source_files = "QShare/*.{h,m}" ? ?#指定Core的路径

? ? end ? ? ? ?#结束定义Core

? ? s.subspec 'WeChat' do |wechat| ? ? ? #定义微信

? ? ? wechat.dependency 'QShare/Core' ? ? ? ? #需要上面的Core

? ? ? wechat.source_files = "QShare/Wechat/*.{h,m}" ? ?#微信的库?

? ? ? wechat.vendored_libraries = "QShare/Wechat/*.a" ?#封装了微信的.a

? ? end ? #结束

? ? s.subspec 'Weibo' do |weibo|

? ? ? ?weibo.dependency "WeiboSDK" ? #这里是直接引用了微博的cocoapod

? ? end

? ? s.subspec 'Tencent' do |qq|

? ? ? qq.dependency 'QShare/Core'

? ? ? qq.source_files = "QShare/Tencent/*.{h,m}"

? ? ? qq.vendored_frameworks = "QShare/Tencent/SDK/TencentOpenAPI.framework" ? #指定framework 的路径

? ? end

? ? s.subspec 'Ali' do |ali|

? ? ? ali.dependency 'QShare/Core'

? ? ? ali.source_files = "QShare/Ali/*.{h,m}"

? ? ? ali.resources = "QShare/Ali/SDK*.bundle" ? #指定了ali 的非代码资源

? ? ? ali.vendored_frameworks = "QShare/Ali/SDK/AlipaySDK.framework"

? ? end

end

编辑好podspec文件后,需要验证一下这个文件是否能通过编译。

$ pod spec lint QShare.podspec --verbose

然而并没有通过

- ERROR | [iOS] Encountered an unknown error (The'Pods'target has transitive dependencies that include static binaries: (/private/var/folders/bw/c_n89d1n6xqffn525kp80000gn/T/CocoaPods/Lint/Pods/WeiboSDK/libWeiboSDK/libWeiboSDK.a)) during validation.

找了一些相关的,这个错误是因为依赖库(s.dependency)包含了.a静态库造成的。虽然这并不影响Pod的使用,但是验证是无法通过的。可以通过 --use-libraries 来让验证通过。使用以下的命令:

$ pod spec lint QShare.podspec --verbose --use-libraries

然而这种情况下使用 --use-libraries 虽然不会出现错误(error),但是有时候会带来一些警告(waring),警告同样是无法通过验证的。这时可以用 --allow-warnings 来允许警告。

$ pod spec lint QShare.podspec --verbose --use-libraries --allow-warnings

静候佳音----终于通过了。

提交到pod

发布时也会验证 Pod 的有效性,如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符,那么发布的时候也应该使用相同的字段修饰,否则出现相同的报错。

发布成功后,终于可以使用 pod search 搜索到自己的 Pod 了。

?tieguan?pod search QShare

-> QShare (1.0.0)

Gather Some Auth Share Pay.

pod 'QShare', '~> 1.0.0'

- Homepage: https://github.com/quankevin/QShare

- Source:https://github.com/quankevin/QShare.git

- Versions: 1.0.0 [master repo]

- Subspecs:

- QShare/Core (1.0.0)

- QShare/WeChat (1.0.0)

- QShare/Weibo (1.0.0)

- QShare/Tencent (1.0.0)

- QShare/Ali (1.0.0)

版本升级

当需要更新 Pod 版本的时候,修改 .podspec 中的 s.version 为更高的版本号,并修改 s.source 中对应的 Git 版本。提交到Git,并打上对应tag。然后再次执行pod trunk push QShare.podspec将新的 .podspec 发布到 CocoaPods。更新完成!

为了更方便的修改版本号,用了以下的语句:

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

这样与 s.version进行了绑定,每次提交新的版本只需要修改s.version ?= "xxxx"。


如有不明白的或者错误的地方,请大家指出,我会将其修正。


参考资料

http://www.tuicool.com/articles/6FF7fi

http://ishalou.com/blog/2012/10/16/how-to-create-a-cocoapods-spec-file/

https://guides.cocoapods.org/syntax/podspec.html#specification

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 21,668评论 0 39
  • 一、创建的github仓库原文地址 1 进入Github网站www.github.com登陆自己的账号后 2 建立...
    freesan44阅读 3,923评论 2 12
  • Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自...
    Nash33阅读 2,081评论 0 50
  • Ruby 安装 要安装cocospods 首先需要安装ruby,可以先安装xcode,再安装macport ,最后...
    山天大畜阅读 1,849评论 0 1
  • 大家好!是时候为自己的好种子施肥浇水晒太阳了,我近期最想实现的目标是:财富目标:到7月底收入6万元,并能亲自参加格...
    张蓉萍阅读 132评论 0 0