(转)CocoaPods

本文转自http://nshipster.cn/cocoapods/

文明是建立在道路,桥梁,运河,下水道,管线,电线和光纤这些基础设施之上的。只要设计和施工得当,它们可以帮助社会成倍的发展。

唯一的问题就是可扩展性。

不管是在一个新的区域容纳上百万家庭还是整合大量的开发者到新的语言环境中去,挑战都是相同的。

在Objective-C的情况下,CocoaPods提供了一个绝佳的整合合作开发的工具,并且在快速发展的开发社区中起到了一个集结点的作用。

本周的NSHipster,我们将通过讨论CocoaPods的过去,现在以及将来,一起庆祝0.33版本(具有里程碑意义)的发布。

接下来的对CocoaPods起源的历史回顾比较冗长,如果你只在乎技术细节,点此直接跳过


回望

在Objective-C在它存在的前20年左右几乎鲜为人知。NeXT和后来的OS X作为一个边缘平台,只拥有一个相对较小的用户和开发者社区。像所有的社区一样,本地用户小组,邮件列表和网站该有的都有,但是开源合作开发缺很少见。诚然,开源在那时也只处于起步阶段,但是Objective-C却从未有过类似于CPAN (the Comprehensive Perl Archive Network)的组织。所有人除了能从Redwood和Cupertino拿到SDK(或者在论坛搜寻一下可用的代码)以外,剩下的问题只能靠自己解决。

Objective-C和iPhone

这种情况一直持续到了2008年的夏天,当iPhone OS开始对第三方开发者开放的时候。几乎一夜之间,Objective-C从无人问津变的炙手可热。上百万开发者的涌入,给这门语言注入了新鲜的血液。

就在此时,GitHub 也刚刚发布,并且开始通过新的分布式合作开发方式改变我们对开源的认知。

一大批开源项目开始涌现,例如ASIHTTPRequest和Facebook的Three20。这些早期的库和框架主要是用来填补iPhone OS 2.0和3.0开发中遇到空白,并且在后续的OS迭代中慢慢被遗弃或取代,但是它们突破了每个开发者“单打独斗”的局面。

在这波新的开发者中,那些来自Ruby背景的对 Objective-C 起来了很大的影响。Ruby作为Perl的精神继承者,有一个类似于CPAN的包管理器:RubyGems

为什么受Ruby的影响这么大?我的理论是:Ruby是在Rails 2005年发布1.0版本的时候开始流行起来。假设创业公司的平均寿命在1.5到2.5年之间,那么此时第一批厌倦Rails的开发者正好可以跳上移动开发的大船上。

就在Objective-C开源开发渐入佳境之时,代码分发的痛点开始显现:

缺乏框架,iOS的代码虽然可以被打包成静态库,但是配置和同步分发却成了一个艰巨的任务。

另外一个思路是用Git Submodules把源码直接放入项目。但是链接框架和配置生成环境的繁琐也使得这种方法也没有好到哪里去,尤其是当ARC和 non-ARC的代码需要分开的时候。

进入CocoaPods时代

CocoaPods是由Eloy Durán于2011年8月12日创建。

在Bundler和RubyGems的启发下,CocoaPods被设计成即能处理库之间的依赖关系,又能自动下载并且配置好所需要的库。试想一下开发只有松散文档编制的Xcode项目的难度,CocoaPods的存在简直就是奇迹。

另一个早先的决定就是利用central Git repository作为所有库的总数据库。虽然这带来了一些运筹上的顾虑,好在GitHub能够提供一个稳健的平台,帮助团队在后续的迭代中,开发出更好的工具链。

时至今日,CocoaPods已经壮大拥有14个核心开发人员和多达5000个开源项目。绝大部分项目都是来自于Objective-C开源社区,我们应该感谢每一个参与其中的开发者。


使用CocoaPods

制作和使用CocoaPods库都十分简单,往往几分钟就能配置完毕。

想获取最新的官方教程,请前往此处

安装CocoaPods

CocoaPods可以方便地通过RubyGems安装,打开Terminal,然后键入以下命令:

Bash

$ sudo gem install cocoapods

就这么简单,现在你应该可以开始使用pod命令了。

如果你使用Ruby版本管理器,如rbenv,你可能需要运行以下指令来重新链接shim的二进制文件(例如:$ rbenv rehash)。

管理相关性

一个相关性管理器可以将一系列的软件需求转化为具体的标签,然后下载并且整合进入相关的项目。

申明需求可以自动化整个项目配置,这也是软件开发的最佳实践之一,无论是在任何语言中。甚至你不使用第三方库,CocoaPods仍然是一个管理代码相关性的绝佳工具。

Podfile

Podfile这个文件是用来用来申明项目代码相关性的,正如BundlerGemfile,或者npmpackage.json

cd进入.xcodeproj文件所在的目录,通过以下命令来创建一个Podfile

Bash

$ pod init

Podfile

Ruby

platform :ios, ‘7.0‘

target "AppName" do

end

你可以申明需要不同版本的库,大部分情况下,申明到minor或者patch版本就足够了

Ruby

pod ‘X‘, ‘~> 1.1‘

CocoaPods遵循语意化版本规范

对于那些不在CocoaPods公共Git仓库中的库,你可以用任何一个Git, Mercurial或者SVN仓库取代,并且还可以指定具体的commit, branch或者tag。

Ruby

pod ‘Y‘, :git => ‘https://github.com/NSHipster/Y.git‘, :commit => ‘b4dc0ffee‘

一旦所有的相关性都申明完毕,你可以使用以下指令来安装所需要的库:

Bash

$ pod install

安装过程中,CocoPods会使用递归来分析所有的需求,并且建立一个代码相关性的图,最后将Podfile序列化为Podfile.lock

比如,如果两个库都需要使用AFNetworking,CocoaPods会确定一个同时能被这两库使用的版本,然后将同一个安装版本链接到两个不同的库中。

CocoaPods会创建一个新的包含之前安装好的静态库Xcode项目,然后将它们链接成一个新的libPods.a target。你原有的项目将会依赖这个新的静态库。一个xcworkspace文件会被创建,从此之后,你应该只打开这个xcworkspace文件来进行开发。

反复使用pod install命令,只会让CocoaPods重复以上步骤,重新安装这些库。所以,当你需要升级它们时,请使用以下命令:

Bash

$ pod update

试着使用CocoaPod

try是一个及其实用但又鲜为人知的CocoaPods命令,通过它你能够在安装一个库之前,先试用一下。

你只需要在try后面加上任意一个CocoaPods公共库的名称,就能试用它了!

Bash

$ pod try Ono

建立自己的CocoaPod

作为Objective-C软件分发实际上的标准,CocoaPods几乎是所有开源项目的标配,如果你想让你的项目被大家很方便地使用。

诚然,这会提高一点点你分享项目的门槛,但是,好处是显然易见的。你花几分钟创建一个.podspec文件可以节省下其他开发者无数的时间。

规范

.podspec文件作为CocoaPods的一个独立单元,包含了名称,版本,许可证,和源码文件等所有信息。

官方指南中有许多信息和范例

以下是NSHipsterKit.podspec

Ruby

Pod::Spec.new do |s|
  s.name     = ‘NSHipsterKit‘
  s.version  = ‘1.0.0‘
  s.license  = ‘MIT‘
  s.summary  = "A pretty obscure library.
                You‘ve probably never heard of it."
  s.homepage = ‘http://nshipster.com‘
  s.authors  = { ‘Mattt Thompson‘ =>
                 ‘[email protected]‘ }
  s.social_media_url = "https://twitter.com/mattt"
  s.source   = { :git => ‘https://github.com/nshipster/NSHipsterKit.git‘, :tag => ‘1.0.0‘ }
  s.source_files = ‘NSHipsterKit‘
end

一旦把这个.podspec发布到公共数据库中,任何想使用它的开发者,只需要在Podfile中加入如下声明即可:

Podfile

Ruby

pod ‘NSHipsterKit‘, ‘~> 1.0‘

.podspec文件也可以作为管理内部代码的利器:

Ruby

pod ‘Z‘, :path => ‘path/to/directory/with/podspec‘

发布CocoaPod

CocoaPods 0.33中加入了Trunk服务。

虽然一开始使用GitHub Pull Requests来整理所有公共pods效果很好。但是,随着Pod数量的增加,这个工作对于spec维护人员Keith Smiley来说变得十分繁杂。甚至一些没有通过$ pod lint的spec也被提交上来,造成repo无法build。

CocoaPods Trunk服务的引入,解决了很多类似的问题。CocoaPods作为一个集中式的服务,使得分析和统计平台数据变得十分方便。

要想使用Trunk服务,首先你需要注册自己的电脑。这很简单,只要你指明你的邮箱地址(spec文件中的)和名称即可。

Bash

$ pod trunk register [email protected] "Mattt Thompson"

至此,你就可以通过以下命令来方便地发布和升级你的Pod!

Bash

$ pod trunk push NAME.podspec

已经发布Pod的作者可以通过几个简单的步骤来声明所有权。


展望

CocoaPods例证了一个社区的凝聚力。在短短的几年内,Objective-C社区让我们所有人都引以为傲。

CocoaPods仅仅是众多Objective-C基础设施的一部分,还有诸如Travis CICocoaDocsNomad这些非常好的生产力工具。

虽然整个社区的未来不会一帆风顺,不管怎样,让我们怀着信念,尽可能的提供建设性的意见。我们更应该互相帮助,乐于分享,共同努力推动整个社区的进步!

CocoaPods已经是Objective-C不可或缺的一部分,它只会越来越强大!

时间: 2024-10-05 04:44:54

(转)CocoaPods的相关文章

CocoaPods安装及使用

工欲善其事,必先利其器,在此记录一下CocoaPods的安装及使用. 一.安装 1.升级Ruby环境 在终端使用:$sudo gem update —system来进行升级 2.安装CocoaPods时我们要访问cocoapods.org,该网站可能被墙了,这样下载安装可能会是龟速,我们可以用淘宝的Ruby镜像来访问该网站,方法如下: 1).gem sources --remove  https://rubygems.org/ 2).gem sources -a  http://ruby.tao

CocoaPods的安装和使用介绍

如有问题欢迎加iOS群:391609253(杭州.上海为主)1.安装 1)首先,查看电脑是否安装了CocoaPods. 上图说明没有安装CocoaPods. 2)接下来,由于在Mac下自带有ruby,使用ruby的gem命令即可下载: 3)因为使用的是亚马逊的云服务,所以Unable to了,那么接下来就是更改ruby的软件源为淘宝源. 4)更改好之后就可以下载了,命令为sudo gem install cocoapods,看到20 gems installed 说明已安装完毕. 5)接下来可以

使用CocoaPods管理第三方开源类库

iOS开发中经常会用到许多第三方类库,比如AFNetworking.FMDB.JSONKit等等,使用CocoaPods这个工具就能很方便得对工程中用到的类库进行管理,包括自动下载配置以及更新. 首先需要下载安装CocoaPods,系统要求有ruby环境,至少OS X 10.9以后是自带ruby环境的(Python也自带了),使用"ruby -v"命令可以查看当前ruby版本. 配置过程如下: 1.ruby环境 不放心的话可以先确认下ruby环境,据说由于GFW的影响,大都把Ruby镜

Cocoapods的安装和使用

一.Cocoapods的安装 第一步:打开终端 第二步:修改ruby镜像引用 gem source --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/ 完成后用命令行查看ruby镜像是否是taobao,用命令行: gem sources -l 返回信息为: *** CURRENT SOURCES *** http://ruby.taobao.org/ 即为成功. 第三步:安装cocoapods sudo ge

cocoaPods的安装

先介绍下自己吧,准备从事ios开发,现在还是一名小白哦,写得不好请多多指教. 一.为什么需要cocoaPods ios开发时,项目中会用到许多第三方库,如果一一把第三方库导入项目时,会很麻烦. 就引出了CocoaPods(https://github.com/CocoaPods/CocoaPods),它可以用来方便的统一管理这些第三方库. 二.安装过程 第一步:安装或者更新Ruby.(当前安装环境Xcode 8.2  ,mac  OS Sierra 10.12.3) Mac  OS本身自带Rub

使用cocoapods

使用cocoapods 0.如果发现装cocoapods时出错就更新gem到最新版本,在终端中输入:$ sudo gem update --system,注意不要把"$"复制上.等待一会儿会看到   我已经敲过所以是   1.移除原有的源 gem sources --remove https://rubygems.org/   2.添加淘宝的镜像gem sources -a https://gems.ruby-china.org/(原来的淘宝镜像https://ruby.taobao.

Cocoapods 简单的使用

Cocoapods的安装就不再记录了,网上搜索就可以.在这里只记录一些Cocoapods简单的使用. 1.Cocoapods 安装三方步奏 ①首先在终端cd到你项目的目录 ②进入到vim编辑器,进行对Podfile编辑 ③对Podfile进行编辑, 需要注意的是podfile里面输入的格式变了. platform :ios,'8.0' [支持的最高版本] target '你项目的名称' do pod 'AFNetworking','~>3.1.0' end ④对Podfile编辑完成后,按ESC

【转】CocoaPods一个Objective-C第三方库的管理利器

原文网址:http://blog.csdn.net/totogo2010/article/details/8198694 介绍: 开发应用的时候第三方的库是不可缺少的,能提高开发的效率. 一些经常用到的库,在新的项目里用是,你又得手工的Add到项目里,用的到库多起来了,就不方便管理了.发现CocoaPods这个软件,可以帮你管理Xcode里的第三方的库,很方便. 那怎么用呢?先安装CocoaPods. 1.CocoaPods是跑在Ruby的软件,安装可能需要几分钟,安装命名: sudo gem

安装CocoaPods遇到的问题 及其解决

本人也是第一次安装这个 CocoaPods,所以刚开始也是遇到了很多懵逼的问题,今天终于搞定了,就自己总结一下,如有错误敬请指出,谢谢! 由于之前,对于终端命令行,不是很了解,总感觉很麻烦,所以也一直没搞CocoaPods,最近比较闲点,就试试 1.打开终端 终端输入  $ruby -v  查看ruby的版本 打印代码: ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15] 2. 更换ruby镜像 终端输入如

CocoaPods

1.更换源 $ gem sources --remove https://rubygems.org/ //等有反应之后再敲入以下命令 $ gem sources -a https://ruby.taobao.org/ 2.升级gem sudo gem update --system 3.安装 sudo gem install cocoapods 4.初始化第三方库信息 pod setup