语言CocoaPods的安以及运用

CocoaPods是应用级依赖项管理器(dependency
manager),用于管理Objective-C、Swift语言应用的依靠项。由Eloy Durán 和
Fabio Pelosin于2011年支出好。

Daddy

1. 安装CocoaPods

CocoaPods是应用Ruby语言编写的,macOS系统默认安装了Ruby。CocoaPods建议以默认的Ruby安装CocoaPods,除非您对Ruby有所了解。

动用如下命令安装CocoaPods:

$ sudo gem install cocoapods

运系统自带Ruby安装CocoaPods时,需要采用sudo权限。

输入上面命令后,命令行提示如下:

Fetching: concurrent-ruby-1.0.5.gem (100%)
Successfully installed concurrent-ruby-1.0.5
Fetching: i18n-0.9.1.gem (100%)
Successfully installed i18n-0.9.1
...
Installing ri documentation for cocoapods-1.3.1
Done installing documentation for concurrent-ruby, i18n, thread_safe, tzinfo, activesupport, nap, fuzzy_match, cocoapods-core, claide, cocoapods-deintegrate, cocoapods-downloader, cocoapods-plugins, cocoapods-search, cocoapods-stats, netrc, cocoapods-trunk, cocoapods-try, molinillo, colored2, nanaimo, xcodeproj, escape, fourflusher, gh_inspector, ruby-macho, cocoapods after 31 seconds
26 gems installed

使如下命令查看CocoaPods版本:

$ gem list --local | grep cocoapods
cocoapods (1.3.1)
cocoapods-core (1.3.1)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.0)
cocoapods-try (1.1.0)

得看来cocoapods版本为1.3.1,同时也足以看看任何一些本。

默认安装之CocoaPods为标准版,使用gem install cocoapods --pre命令安装测试版CocoaPods,使用gem install cocoapods -v x.y.z
命令安装指定版本CocoaPods。

黄西发出一个段子。

2. 更新CocoaPods

只是需要再次安装,就可以CocoaPods升级到最新版本:

$ [sudo] gem install cocoapods

设设置CocoaPods时采取了sudo权,更新时也要sudo权限。

倘CocoaPods有了新本子,在您利用pod一声令下时会获得CocoaPods X.X.X is
now available, please update.
的提示信息。

说刚到美国常,有未礼貌之反移民的食指当车上贴车贴,上挥洒“if you don’t speak
English, ho home” (不见面英语的且滚回老家)。

3. 变换除低版本CocoaPods

CocoaPods更新至新本子后,低版本的CocoaPods并无见面于电动移除。如下所示:

$ gem list --local | grep cocoapods
cocoapods (1.3.1, 1.1.0)
cocoapods-core (1.3.1, 1.1.0)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.0)
cocoapods-try (1.1.0)

用如下命令移除指定版本CocoaPods:

$ gem uninstall cocoapods -v 1.1.0
Successfully uninstalled cocoapods-1.1.0
$ gem uninstall cocoapods-core -v 1.1.0
Successfully uninstalled cocoapods-core-1.1.0

// 查看cocoapods版本。
$ gem list --local | grep cocoapods
cocoapods (1.3.1)
cocoapods-core (1.3.1)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.0)
cocoapods-try (1.1.0)

他的子女长大了,为了锻炼孩子双语能力,他和孩子约定,在家说话中文,在外摆英文。

4. 管理第三方库

来一致上,孩子当他拒绝说英文,他吼孩子“if you don’t speak English, go
home!”

4.1 创建Podfile文件

CocoaPods中Podfile
文件用于列出要于项目被采用的库,可以利用以下简单栽艺术开创Podfile文件:

  • 在列目录中开创一个称呼吧Podfile的空文本文件。
  • 用Terminal定位到花色目录,输入pod init一声令下,CocoaPods会自动创建Podfile文件,并会见自行初始化一些必不可少代码。推荐应用pod init指令创建Podfile文件。

使用pod init命创建的Podfile文件内容如下:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

end                                                                          

前后对比,惹人莞尔。

4.2 列有所要第三方库

Podfile文件内容可非常简单,如下所示:

target 'MyApp` do
  pod 'Mantle'
end

下用vim编辑Podfile文件,添加MantleReactiveObjC其三方库:

# 这里Pod支持iOS系统,还可以支持osx。如果没有说明支持的系统,默认支持所有系统。
platform :ios, '9.0'

target 'MyApp' do
  pod 'Mantle'
  pod 'ReactiveObjC', '~> 3.1.0'

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

添加第三方库时,如果无点名版本,则默认使用新型正式版。另外,使用如下命令指定版本:

// 使用2.1.0版本的Mantle
pod 'Mantle', '2.1.0'

除外不利用本号、固定版本号,还可下逻辑符指定版本号。

  • '> 0.2':比0.2大之另外版本。
  • >= 0.2:大于等于0.2版本。
  • < 0.2:小于0.2的版本。
  • ~> 0.6.48':大于等于0.6.48版本,但小于0.7版本。
  • '~> 0.6':大于等于0.6版本,但小于1.0版本。
  • '~> 1':主版本号大于等于1

但是者段子的后半局部可受不了推敲。在美国在之非英语国家的移民,尤其是炎黄子孙,在男女成才历程中面临孩子的语言偏好题材。

4.3 添加第三方库

使用pod install命令添加第三方库:

$ pod install
Analyzing dependencies
Downloading dependencies
Installing Mantle (2.1.0)
Installing ReactiveObjC (3.1.0)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `MyApp.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There are 2 dependencies from the Podfile and 2 total pods installed.

据悉终端提示,如果想只要使用刚添加的老三方库,必须打开MyApp.xcworkspace,而休之前的MyApp.xcodeProj

除了家庭之外,孩子的生存环境基本上都是英语。孩子的伴,朋友,学校的教职工都操英文,在小伙伴社交压力下,孩子频繁只想就此英文。经常闹的,不是男女拒绝说英语,而是拒绝中文。

4.4 导入第三方库

CocoaPods创建Mantlepod工程,并补充加至您的workspace。因此,当你导入Mantle每每,是从workspace的别样工程导入,需要动用尖括哀号(<
>)而不双引号(“ ”)。

#import <Mantle/Mantle.h>

5. pod install VS pod update

刚巧接触CocoaPods时,很多人口会见误以为pod install于是在初次设置工程时,之后用pod update,事实并非如此。

  • 使用pod install指令于project中上加新的pods。即使之前曾经使过pod install令,在长、移除pods时,依然采取pod install命令。
  • 单独发生亟待把pods更新至新本子时,使用pod update [PODNAME]命令。

举行家长之连接好担忧。

5.1 pod install

第一不善啊project添加pods,编辑Podfile文本为丰富、更新、移除pods,均运用pod install命令。

  • 老是运行pod install指令时,CocoaPods会管长的pod版本信息写副Podfile.lock文件,Podfile.lock文本跟踪已装pod版本信息,并锁定到目前版本。
  • 当运行pod install命令时,CocoaPods只处理不以Podfile.lock文件中列有的赖项。
    • 对于Podfile.lock文件被列有底pods,CocoaPods直接下载Podfile.lock文件被列有之版,不会见尝试摸新本子。
    • 对于不以Podfile.lock文本中列有之pods,CocoaPods会根据Podfile文件添加pods。

女儿三载前,我们着力是休受其谈话英文的。买的绘本,中英都来,即便是英文绘本,我们呢基本还是故中文来讲。

5.2 pod outdated

当运行pod outdated命令时,CocoaPods会查找Podfile.lock遭逢颇具pods,并列出更新版本的pods。也就是说,运行pod update [PODNAME]一声令下时,如果新本子符合Podfile的讲述,则会更新pod到新本子。

$ pod outdated
Updating spec repo `master`
  $ /usr/local/bin/git -C /Users/ad/.cocoapods/repos/master fetch origin
  --progress
  remote: Counting objects: 45, done.        
  remote: Compressing objects: 100% (40/40), done.        
  remote: Total 45 (delta 27), reused 0 (delta 0), pack-reused 0        
  From https://github.com/CocoaPods/Specs
     f7d947da03c..a14b55af97b  master     -> origin/master
  $ /usr/local/bin/git -C /Users/ad/.cocoapods/repos/master rev-parse
  --abbrev-ref HEAD
  master
  $ /usr/local/bin/git -C /Users/ad/.cocoapods/repos/master reset --hard
  origin/master
  HEAD is now at a14b55af97b [Add] Waterpurifier 1.0.4

CocoaPods 1.4.0.rc.1 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.4.0.rc.1

Analyzing dependencies
The following pod updates are available:
- Mantle 1.4.1 -> 1.4.1 (latest version 2.1.0)

妮对英文的接触,基本是每周带其错过图书馆听故事,学歌。可以毫无疑问,故事她是听不顶懂得的,但是很欣赏学歌和相互。

5.3 pod update

运行pod update [PODNAME]命令时,Cocoapods会查找[PODNAME]的初本子,如果新本子同时满足Podfile
文件对版本描述,则会更新pod。

倘运行pod update一声令下时莫弥加pod名称,则会寻找所有pods的初本子,并尝试更新。

坐担心无比晚学英语会被她然后难以融入集体,我们今年起来送它上幼儿园。女儿属于敏感型的性格,对生的环境需要比丰富的年月观测与适应。在经验了初的无适应等语言之后,她开受了托儿所。

6. 查找第三正在库 pod search

Podfile文件被第三在库名称区分轻重缓急写,写错后install第三方库时会见唤醒语法错误(syntax
error)。为避失误,可以于加上前面先行物色对应库。

在Terminal中输入pod search [PODNAME]即可开展检索,查找时不区分轻重缓急写。可以兼容其他可选取项进行搜寻,如—simple只查找pod名称,—stats显示GitHub中watch
fork数据。

$ pod search --simple --stats AFNetworking
-> AFNetworking (3.1.0)
   A delightful iOS and OS X networking framework.
   pod 'AFNetworking', '~> 3.1.0'
   - Homepage: https://github.com/AFNetworking/AFNetworking
   - Source:   https://github.com/AFNetworking/AFNetworking.git
   - Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3,
   3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2,
   2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0,
   2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4,
   1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2,
   1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
   - Author:   Mattt Thompson
   - License:  MIT
   - Platform: iOS 7.0 - macOS 10.9 - tvOS 9.0 - watchOS 2.0
   - Stars:    30058
   - Forks:    9386
   - Subspecs:
     - AFNetworking/Serialization (3.1.0)
     - AFNetworking/Security (3.1.0)
     - AFNetworking/Reachability (3.1.0)
     - AFNetworking/NSURLSession (3.1.0)
     - AFNetworking/UIKit (3.1.0)

另外,也可以CocoaPods官网进行查找。

日渐的,她起当与玩具玩儿的上,用英语的语调讲话,讲的内容大部分时候是空虚的音节,偶尔加上玩具的名字跟其已经会的有的用语。

总结

由Swift不支持静态库(static
library),在Swift中采用时要用framework。

target 'MyApp` do
  use_frameworks!
  pod 'MJRefresh`, '~> 3.1.15`
end

偶然添加的老三仓库会有部分警告信息,通过在Podfile丰富以下命令可以藏第三在库中的警示信息。

platform :ios, '9.0'
# 隐藏所有警告
inhibit_all_warnings!

target 'MyApp' do
  pod 'Mantle', '1.4.1'
  # 不要隐藏ReactiveObjC的警告,也可以用此方法只隐藏指定pod警告。
  pod 'ReactiveObjC', '~> 3.1.0', :inhibit_warnings => false

end

此外,关于是否以Pods文件在版本控制,可以因下面的利害自行决定:

  • Pods文件参加版本控制:
    • 可以clone仓库后迅即开始工作,不需要pod install
    • 可以保证每人都动相同版本。
    • 尽管原始pod已经移除也可延续以。
  • Pods文件排除在版本控制系统外:
    • 使得仓库更粗。
    • 集合分支时未会见油然而生不同Pod版本间冲突。

只是得注意的凡,一定要将Podfile文件和Podfile.lock文本在版本控制。

最后,CocoaPods除了用开源库添加到公的种类外,还足以管理私有库,点击这里翻具体加加步骤。

迎再多指正:https://github.com/pro648/tips/wiki

奇迹它吗会见针对家长这样讲。我们虽任不懂得,但为还是鞭策赞赏她。

渐渐的,她起来能说简单的句子了。那无异龙,她将在零食给本人,张嘴就是“Daddy,
this one?”那语音语调,比自己是依照多了。

于是乎她于爱人的言语模式,变成了个别栽。一种植是事先的中文模式,词汇丰富表达多样,当然,三岁之她,说“不要”,“不行”,“不对”,“不思量”的时段又多。

任何一样种植是语音语调虽初有雏形,但词汇量还不够时将中文向里汇的英文模式。

历次她让自己“Daddy”,我哪怕知其是使说英语了。最近它们因此Daddy叫自己的频次越来越多。都颇少受大了。

乃,我发三三两两担心,担心它其后会不说汉语。我老是都同它说为自己Daddy,我还说,叫爹爹爸.

2017-11-16 Frist draft

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图