swift项目-让本身的项目支持cocoapod和carthage

前言:最近本身写了一个图片选择器的库,想借着这个机会学习一下怎么让本身的库支持cocoapod和carthage,因为我封装的这个库内容很是多,因此在开发过程当中遇到了不少的小问题都比较特殊,google半天有时也解决不了,经过慢慢摸索仍是成功了,在这里记录一下我在开发中遇到的各类问题点。ios

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

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

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

1、支持cocoapod

1.cd到当前目录swift

cd  CLImagePickerTool

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

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-che...' 库的github地址测试

详细说下下面的含义吧,好比个人库的所有demo都在CLImagePickerTool项目下的CLImagePickerTool文件夹下,而且都是swift写的就能够表示成以下的形式
s.source_files = 'CLImagePickerTool/CLImagePickerTool/*/.swift'ui

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

}

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才能搜索到本身的库。

2、支持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 . . .]
](http://upload-images.jianshu....

屏幕快照 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

相关文章
相关标签/搜索