【iOS】开发并上传静态库到CocoaPods

1、基于pod自动创建项目(演示项目名:XHLib)

执行命令pod lib create XHLib。创建过程中会询问以下几个问题:

What language do you want to use?? [ Swift / ObjC ]
 > ObjC

Would you like to include a demo application with your library? [ Yes / No ]
 > Yes

Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None

Would you like to do view based testing? [ Yes / No ]
 > NO

What is your class prefix?
 > XH

第二个问题询问是否提供一个demo项目,通常选择Yes,其他的可以根据需要选择。命令执行完后,就会创建好一个通过cocoapods管理依赖关系的基本类库框架。

按照默认配置,类库的源文件将位于XHLib/Classes文件夹下,资源文件位于XHLib/Assets文件夹下,Demo文件位于Example文件夹下

Demo位置
待封装代码位置

2、创建远端仓库,将本地仓库与远端仓库进行关联

3、编辑 XHLib.podspec文件

打开XHLib.podspec文件,修改类库配置信息

Pod::Spec.new do |s|

  s.name             = 'XHLib'
  s.version          = '0.0.1'
  s.summary          = 'A short description of XHLib.'
  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/XHJCoder/XHLib'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'XHJCoder' => '1149949564@qq.com' }
  s.source           = { :git => 'https://github.com/XHJCoder/XHLib.git', :tag => s.version.to_s }
  s.ios.deployment_target = '8.0'

  # s.ios.vendored_frameworks = 'XHLib.framework'
  s.source_files = 'XHLib/Classes/**/*'

  s.dependency 'SVProgressHUD'

  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
  # s.resource_bundles = {
  #   'XHLib' => ['XHLib/Assets/*.png']
  # }
  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.requires_arc = true

end
podspec文件的简单说明:

s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.description: 详细描述
s.homepage:项目主页地址
s.license:许可证
s.author:作者
s.social_media_url:社交网址
s.source:项目地址
s.source_files:需要包含的源文件
s.resources: 资源文件
s.requires_arc: 是否支持ARC
s.dependency:依赖的三方库
s.frameworks:依赖的系统的框架
s.ios.vendored_frameworks:自己的framework

podspec文件的详细说明:Podspec Syntax Reference

4、进入Example文件夹下,执行pod install,让demo项目安装依赖项并更新配置。

pod install

5、添加需要封装的代码

将需要封装的代码存放到XHLib/Classes目录下:

存放目录

在项目中的位置:

注意⚠️:只要XHLib/Classes目录有变动就需要重新执行Pod install或者切换到XHLib “command+B”一下 来更新配置。

(如果上图这个位置没有XHLib,进入Manage Schemes进行添加)

前面操作完成后可以在demo项目中调用测试。

6、库上传前相关配置

静态库

1)制作静态库
进入Pods -> TARGETS -> XHLib,配置静态库。具体操作请看:静态库(.framework)制作

2)找到生成的.framework文件,移动到你想要放的位置(该位置必须与podspec文件里s.ios.vendored_frameworks的位置一样)

我的项目里将.framework文件放在与podspec文件同一级目录下

.framework位置

3)修改podspec文件

s.ios.vendored_frameworks = 'XHLib.framework'
开源库

1)修改podspec文件

s.source_files = 'XHLib/Classes/**/*'

7、进行上传

1)提交修改并给这次提交打上 tag,上传到git

git commit -a -m 'v0.0.1'
git tag '0.0.1'
git push --tags
git push origin master

2)验证类库(可以通过添加--allow-warnings忽略一些警告)

pod lib lint XHLib.podspec

pod lib lint XHLib.podspec --allow-warnings

出现 xxxxx passed validation表示验证通过.
3)上传类库
pod trunk需要注册 具体做法请看Getting setup with Trunk

pod trunk push
上传成功

注意⚠️:刚上传成功后,可能通过pod search无法找到,可以过几天再看看。

8、测试上传到cocoapods上的类库是否可用

1)修改Podfile文件

Podfile文件修改

2)进入Example目录下 执行pod install

3)在demo中调用,看是否可调用

其他

删除本地tag

git tag -d 0.0.1 

删除远端tag

git push origin :0.0.1   
//也可以这样  
git push origin --delete tag 0.0.1   

删除上传到cocoapods上的代码

pod trunk delete XHLib 0.0.1

参考:

http://www.cnblogs.com/brycezhang/p/4117180.html
http://www.jianshu.com/p/f841e248bc4f

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

推荐阅读更多精彩内容