CocoaPods使用

原文连接node

CocoaPods简介

CocoaPods是iOS开发、macOS开发中的包依赖管理工具,效果如Java中的Maven,nodejs的npm。ios

CocoaPods是一个开源的项目,源码是用ruby写的,源码地址在GitHub上。git

不管是作iOS开发仍是macOS开发,都不可避免的要使用到一些第三方库,优秀的第三方库可以提高咱们的开发效率。若是不使用包依赖管理工具,咱们须要手动管理第三方包,包括但不限于:github

  1. 将这些第三方库的源码拷贝到项目中
  2. 第三方库代码有可能依赖一些系统framework,咱们须要把第三方库依赖的framework导入到项目中
  3. 当第三方库有更新时,须要将更新过的代码拷贝到项目中

以上工做虽然简单,可是若是项目中的第三方库较多,须要耗费大量的时间和精力。CocoaPods能够将咱们从这些繁琐的工做中解放出来。npm

安装CocoaPods

安装CocoaPods比较方便。一般状况下,macOS都安装了ruby,直接使用ruby 的gem命令便可安装CocoaPods。xcode

使用以下命令能够查看有没有安装ruby:ruby

// 若是能正确的输出版本号,则说明ruby已经正确安装
ruby --version
复制代码

使用以下命令能够查看gem的版本号:bash

// 该命令会输出gem的版本号
gem --version
复制代码

若是gem的版本号太低,安装CocoaPods可能会失败。因此在安装CocoaPods以前能够升级一下gem,使用以下命令:网络

// 更新gem
sudo gem update --system
复制代码

另外须要注意的是,ruby的软件源https://rubygems.org 使用的是亚马逊云的服务,国内普通网络是不能访问的。若是不能访问,能够将ruby的源换成国内淘宝的源,命令以下:框架

gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
复制代码

操做完后,能够验证下更换源是否成功,命令以下:

// 若是只有一个淘宝的源,说明更换源成功
gem source -l
复制代码

以上全部工做都完成以后,如今能够安装CocoaPods了,命令以下:

// 安装CocoaPods
sudo gem install cocoapods
复制代码

安装成功后,在使用以前,还须要对CocoaPods初始化,命令以下:

// 这一步花费的时间比较久,耐心等待便可
pod setup
复制代码

测试一下CocoaPods有没有安装成功:

// 若是能正确显示版本号,说明CocoaPods安装成功
pod --version
复制代码

使用CocoaPods

使用CocoaPods安装第三方框架

CocoaPods主要是用于iOS项目、macOS项目管理第三方框架,所以在介绍如何使用CocoaPods时,须要结合iOS项目或者macOS项目。这里新建一个iOS项目TestCocoaPods。

  1. 进入项目中和.xcodeproj同级的文件夹,如图:

image

  1. 在该目录下新建一个Podfile文件,可使用命令:
touch Podfile
复制代码

新建Podfile后以下图:

image

  1. 编辑Podfile文件。Podfile文件有其固定的格式,能够从网上找一个,而后修改里面的内容便可。这里随便贴一个:
# Uncomment this line to define a global platform for your project

platform :ios, '8.0'

target 'TestCocoaPods' do
  pod 'SDWebImage', '~> 4.3.2'
end

复制代码

固然能够增长更多的第三方库,上述示例中只增长了1个,是SDWebImage。

Podfile文件中须要写明平台,是iOS仍是osx(macOS),以及第三方库所要支持的系统最低版本号。以后是target,一个Podfile中能够有多个target。好比说插件开发中,主项目和插件项目所依赖的包多是不一样的,就能够写两个target,分别设置依赖的第三方库。须要导入一个第三方库,只须要

pod 'package name', 'version number'
复制代码

便可。版本号有多种表示方式,这里简单介绍几种:

(1)'>=1.0' 最低版本号为1.0

(2)'<=1.0' 最高版本号为1.0

(3)'~>1.0' 兼容1.0的版本的最新版本

一般状况下使用 ~> 的方式。 4. 安装所依赖的第三方库。安装使用的方式是命令行,在该目录下执行下述命令便可:

pod install
复制代码

安装以后会发现该目录下有较大的变化,以下图:

image

多了Pods目录,且Pods目录里面也是一个单独的工程。

image

多了TestCocoaPods.xcworkspace文件,之后打开TestCocoaPods项目时,须要打开TestCocoaPods.xcworkspace而不是TestCocoaPods.xcodeproj。

打开TestCocoaPods.xcworkspace后,能够发现,里面包含两个工程,分别是TestCocoaPods和Pods。

image

在TestCocoaPods中使用第三方库,直接import便可。 5. 当有需求增长或者删除依赖的第三方库时,直接修改Podfile文件便可,修改完毕以后,执行命令:

pod install
复制代码

便可。

若是有需求修改依赖的第三方库的版本号,修改完毕以后,执行命令:

pod update
复制代码

便可。

使用CocoaPods查找第三方框架

在使用CocoaPods时,能够提早检查第三方框架是否在CocoaPods的管理之下,使用的命令是search:

pod search 框架名
复制代码

这是我search YYWebImage的结果:

image

CocoaPods的大概工做原理

CocoaPods的使用相对来讲是比较简单的。那么CocoaPods是如何完成这些工做的?以及为什么生成了一个Pods工程?

实际上,CocoaPods是将全部依赖的第三方库都放到了Pods项目中

image

全部的源码管理工做从住项目转移到了Pods项目中。

Pods项目最终会编译成一个libPods-项目名.a的文件,主项目只须要依赖这个.a文件便可。

image

对于libPods-TestCocoaPods.a这个文件,能够将其理解为各个第三方库的.a文件的集合。在本例中,libPods-TestCocoaPods.a就是libPureLayout.a和libSDWebImage.a的集合。

image

开源项目支持CocoaPods

下面介绍一下如何让本身的开源项目支持CocoaPods。

gitHub上新建仓库

首先,须要在gitHub上新建仓库,新建仓库时记得选择开源协议,一般选择MIT,另外就是设置成项目为public。这里新建一个仓库ACMoreResponseButton。

image

记得选择开源协议为MIT:

image

各类开源协议

开源协议有多种,如MIT、BSD等,常见的有6种,关于这6种开源协议的区别,网上有一张图描述的是很是清楚的,这里贴一下:

image

能够看到,MIT许可证是要求最不严格的许可证,能够给其余开发者更大的空间。这也是为什么多数开源框架都使用MIT许可证的缘由。

将gitHub上的仓库克隆到本地

使用git clone命令,将gitHub上的仓库克隆到本地:

git clone https://github.com/acBool/ACMoreResponseButton.git
复制代码

克隆完以后,在本地仓库上新建项目,并完成对应的功能。以后,使用git add、git commit、git push命令,将本地的修改提交,而且推送到远程仓库,这些步骤再也不详细介绍。

新建podspec文件

凡是支持CocoaPods的开源库,都须要具有podspec文件,podspec文件能够理解成是对该开源库的描述,包括做者信息,项目主页等。新建podspec文件使用下述命令:

pod spec create ACMoreResponseButton
复制代码

新建podspec以后:

image

编辑podspec文件

podspec文件新建以后,里面会有一些信息,能够看作是一个模板,咱们只须要稍微对podspec的文件作改动便可。这里贴一下我修改以后的podspec文件:

s.name         = "ACMoreResponseButton"
s.version      = "1.1.0"
s.summary      = "This is a moreResponseArea Button"
s.homepage     = "https://github.com/acBool/ACMoreResponseButton"
s.license      = "MIT"
s.author       = { "wmn" => "acbool@163.com" }
s.platform     = :ios, "9.0"
s.source       = { :git => "https://github.com/acBool/ACMoreResponseButton.git", :tag => "1.1.0" }
s.source_files  = "MoreResponseButtonExample/MoreResponseButtonExample/ACMoreResponseButton/*"
s.exclude_files = "UIKit"
s.requires_arc = true
复制代码

podspec文件中能够作更多的配置,若是想要了解更多,能够参考gitHub上一些比较好的开源库,看下podspec文件是怎么写的。

分支新建tag,并推送到远程仓库

在上面的podspec文件中注意到,tag值为1.1.0,所以咱们须要在分支上新建一个tag,而且将该tag推送到远程仓库,命令以下:

// 新建tag
git tag 1.1.0
// 将本地的tag推送到远程仓库
git push --tags
git push
复制代码

这里的tag值须要和podspec中写的保持一致。

验证podspec文件

在将开源库提交至CocoaPods以前,咱们须要验证一下podspec文件,验证命令以下:

pod spec lint ACMoreResponseButton.podspec
复制代码

若是验证不经过,会提示有几个警告,有几个error,且警告信息,error信息都会标识出来。须要注意的是,不管是警告仍是error,都须要解决。

若是验证经过,会提示以下图:

image

提交至CocoaPods

注意,只有podspec文件验证经过后,才能将开源库提交至CocoaPods,不然即便提交了也不会成功。提交CocoaPods的命令以下:

pod trunk push ACMoreResponseButton.podspec
复制代码

提交成功以后以下图:

image

注册CocoaPods

注意,若是以前没有提交过开源库到CocoaPods,须要先注册一下。注册的命令为:

// 注意将邮箱名和昵称替换
pod trunk register test@163.com '昵称名' --description='描述'
复制代码

执行完毕后,CocoaPods会给对应的邮箱发送一封确认邮件,点击邮件中的确认连接便可。注册成功后,再执行上面的提交步骤。

私有库支持CocoaPods

在公司项目中,有时一些通用的功能会封装成框架,这些框架也是能够支持CocoaPods的。所不一样的是,咱们但愿这些框架只为公司内部使用,并非开源的,能够称之为私有库。

私有库支持CocoaPods的步骤和公有库基本一致,区别就是不须要提交至CocoaPods,也就是验证podspec文件经过后就能够了。

另外就是,使用私有库时,Podfile文件的写法也有细微区别。Podfile文件中引入私有库时的写法:

// 注意替换私有git域名
pod 'ProjectName',git=>"https://XXX.git"
复制代码
相关文章
相关标签/搜索