swift项目-让自己的项目支持cocoapod和carthage

前言:最近自己写了一个图片选择器的库,想借着这个机会学习一下怎么让自己的库支持cocoapod和carthage,由于我封装的这个库内容非常多,所以在开发过程中遇到了很多的小问题都比较特殊,google半天有时也解决不了,通过慢慢摸索还是成功了,在这里记录一下我在开发中遇到的各种问题点。

假如我们已经创建了一个库,库的名称是CLImagePickerTool,并且已经上传到github,下面我们就来一步一步让它支持cocoapod.

(对于需要暴露出来的类和方法,一定要用public修饰,因为我第一次搞得时候就没有注意到这一点,还有一点!!我的工程名称叫CLImagePickerTool,我的库的名称也叫CLImagePickerTool,这样不好!在下面我集成carthage的时候就遇到了问题,建议项目名称和库的名称不要一致,因为别人引用的是你的库而不是整个项目,只要保证库名称是你想要的就好了。下面先贴出来我的项目目录,后面也可以参考)

屏幕快照 2017-08-31 下午8.56.01.png

一、支持cocoapod

1.cd到当前目录

 cd  CLImagePickerTool

2.在当前文件夹下创建一个podspec文件

 pod spec create CLImagePickerTool

3.编辑 podspec文件,这里是用vim打开的

    vim CLImagePickerTool.podspec

4.由于podspec文件自动生成了很多内容,我们可以不用管他,全选删除,将下面的代码复制到该文件中,下面对这块代码进行讲解,根据你自己的库名称和目录对照着改一下就好了。

      Pod::Spec.new do |s|
      s.name = 'CLImagePickerTool'
      s.version = '2.0.5'
      s.license = 'MIT'
      s.summary = 'This is a picture selector'
      s.homepage = 'https://github.com/Darren-chenchen/CLImagePickerTool'
      s.authors = { 'Darren-chenchen' => '1597887620@qq.com' }
      s.source = { :git => 'https://github.com/Darren-chenchen/CLImagePickerTool.git', :tag => s.version.to_s }

      s.ios.deployment_target = '8.0'

      s.source_files = 'CLImagePickerTool/CLImagePickerTool/**/*.swift'
      s.resource_bundles = { 
'CLImagePickerTool' => ['CLImagePickerTool/CLImagePickerTool/images/**/*.png','CLImagePickerTool/CLImagePickerTool/**/*.{xib,storyboard}','CLImagePickerTool/CLImagePickerTool/**/*.{lproj,strings}']
      }
    end

下面我们来解释一下各个选项的意义。
s.name = 'CLImagePickerTool' 你的库的名称
s.version = '2.0.5' 版本号
s.license = 'MIT' listen文件的类型
s.summary 简单的描述
s.homepage = 'https://github.com/Darren-chenchen/CLImagePickerTool' 库的github地址

详细说下下面的含义吧,比如我的库的全部demo都在CLImagePickerTool项目下的CLImagePickerTool文件夹下,并且都是swift写的就可以表示成如下的形式
s.source_files = 'CLImagePickerTool/CLImagePickerTool/*/.swift'

对于项目中用到的资源文件,比如我的图片路径就是CLImagePickerTool/CLImagePickerTool/images,如果用到了xib或者storyboard,或者用到了本地化相关的文件,总之只要是相关的资源文件都要表现出来
s.resource_bundles = {
'CLImagePickerTool' => ['CLImagePickerTool/CLImagePickerTool/images//.png','CLImagePickerTool/CLImagePickerTool//.{xib,storyboard}','CLImagePickerTool/CLImagePickerTool/*/.{lproj,strings}']
}

5.提交代码到github,并打标签

    git commit -a -m “......”
    git push 
    git tag 1.0.0   // 这个版本要和podspec中的version一致
    git push origin --tags   // 提交到远端

6.检查podspec 文件是否有错误

    pod spec lint CLImagePickerTool.podspec

如果出现CLImagePickerTool.podspec passed validation. 就表示没有错误。

7.如果之前没有注册过CocoaPods账号。
打开终端,在终端中输入如下命令:

    pod trunk register 邮箱地址 '用户名' --description='描述信息'

然后根据终端显示信息,如果成功的话会提示让你去邮箱里确认进行激活。

输入如下命令可查看个人CocoaPods账号信息

    pod trunk me

8.如果注册过,就你直接执行下面的代码,直接推到cocoapods服务器

    pod trunk push  CLImagePickerTool.podspec

(如果你完成了第6部,下面的操作跟着终端的提示一步一步也能完成后续操作,主要是遇到问题不要太着急,细心看!)

9.如果你能完成上面操作,在执行完 pod trunk push CLImagePickerTool.podspec后如果出现下面的情况就说明你的库已经支持cocoapod了。

屏幕快照 2017-08-31 下午9.00.00.png

10.成功上传后要先执行 pod setup更新下pod才能搜索到自己的库。

二、支持carthage

  1. 新建targets
屏幕快照 2017-08-31 下午9.03.36.png
屏幕快照 2017-08-31 下午9.03.51.png

2.添加需要编译的文件和资源,这个地方要特别注意,Compile Sources 文件中不能添加xib文件和图片资源,只能添加后缀名为swift的文件

![Uploading 屏幕快照 2017-08-31 下午9.08.55_981672.png . . .]
屏幕快照 2017-08-31 下午9.08.55.png
  1. 这里也有一个注意点,大家可以从图片中看到,我新建的target名称是CLImagePickerTool-framework,如果我想打包出来的文件名不要这个名称,我想要换个名称,我本来是想用CLImagePickerTool这个名称,那么打包出来的framework就是CLImagePickerTool.framework,但是这个名称和项目名称重复了,这样肯定不行,但是我现在又不能去改项目名称,大家都知道改项目名称又会遇到很多问题,所以我这里就很无奈的给framework起了另外一个名字--ImagePickerTool.framework。说了这么多,在哪设置名称呢,看图片吧!
屏幕快照 2017-08-31 下午9.21.38.png

4.再补充一个注意点!我的库最低支持ios8,当你新建target后要检查是不是也是最低支持ios8

屏幕快照 2017-08-31 下午9.31.52.png

5.分享target,勾选我们的framework ,点击close

屏幕快照 2017-08-31 下午9.11.12.png
屏幕快照 2017-08-31 下午9.23.21.png

6.下面开始测试我们的framework库是不是可以用,先生成一个framework
进入我们当前文件夹CLImagePickerTool,执行下面代码,会生成一个carthage文件夹

      carthage build --no-skip-current
屏幕快照 2017-08-31 下午9.28.54.png

7.新建一个项目,测试framework是否可以使用,将上面生成的ImagePickerTool.framework,拖到项目中,


屏幕快照 2017-08-31 下午9.35.48.png

运行项目,如果没有报错就开始测试是不是已经引入了framework库,

屏幕快照 2017-08-31 下午9.38.46.png

8.如果可以用也没有报错,就说明这个framework就可以使用的,下面就可以通过Carghage来导入framework了。在这之前先把我们的demo上传到github,并且打一个新标签

    git commit -a -m “......”
    git push 
    git tag 1.0.1   // 这个版本要和podspec中的version一致
    git push origin --tags   // 提交到远端

9.测试carthage 。建议再建一个项目,在项目根目录新建一个Cartfile文件,在里面写入

    github "Darren-chenchen/CLImagePickerTool"

执行

    carthage update

执行完成应该是下面的状态

屏幕快照 2017-08-31 下午9.46.42.png

10.还需要手动添加一下framework库。

屏幕快照 2017-08-31 下午9.48.07.png
屏幕快照 2017-09-01 上午10.27.37.png

再来说下我在这一步遇到的问题吧!因为我的库也支持cocoapod,在cocoapod中如果要加载xib或者图片,肯定是要先找到后缀名为.bundle的文件,然而carthage却是要找后缀名为.framework的文件,因为之前一直没有处理这个问题,导致项目总是在xib的位置奔溃,下面就贴出来我针对carthage的处理

屏幕快照 2017-09-01 上午10.30.41.png

感谢您的阅读,欢迎访问我的github

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

推荐阅读更多精彩内容