Cocoapods工具02 -- pods文件与命令介绍

Podfile文件

  • Podfile文件是在工程路径下,通过pod init命令自动生成的一个文件,此文件可编辑输入你想要导入的第三库的名称及版本;
  • Podfile文件其有特定的语法格式,一般常见的有以下内容;
Podfile文件的语法格式
  • platform :iOS, '8.0'

    • 指定了开源库应该被编译在哪个平台以及平台的最低版本;
    • 如果不指定平台版本,官方文档里写明各平台默认值为 iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0
  • use_frameworks!

    • 使用 frameworks 动态库替换静态库链接;
  • target '项目名称xxx' do ... end

    • 指定特定 target 的依赖库;
    • 可以嵌套子 target 的依赖库;
  • inhibit_all_warnings!

    • 屏蔽 CocoaPods 库里面的所有警告;
    • 这个特性也能在子 target 里面定义,如果你想单独屏蔽某 pod 里面的警告也是可以的,例如:pod 'JYCarousel', :inhibit_warnings => true
  • source

    • 指定 specs 的位置,自定义添加自己的 podspec
    • 如果没有自定义添加 podspec,则可以不添加这一项,因为默认使用 CocoaPods 官方的 source。一旦指定了其它 source,那么就必须指定官方的 source,如下例所示:
source 'https://github.com/CocoaPods/Specs.git'//官方的
source 'https://github.com/aliyun/aliyun-specs.git'//自定义的
  • 导入目标第三库的基本写法与含义:
    pod 'AFNetworking' --> 不显式指定依赖库版本,表示每次都获取最新版本
    pod 'AFNetworking', '2.0' --> 只使用 2.0 版本
    pod 'AFNetworking', '> 2.0' --> 使用高于 2.0 的版本
    pod 'AFNetworking', '>= 2.0' --> 使用大于或等于 2.0 的版本
    pod 'AFNetworking', '< 2.0' --> 使用小于 2.0 的版本
    pod 'AFNetworking', '<= 2.0' --> 使用小于或等于 2.0 的版本
    pod 'AFNetworking', '~> 0.1.2' --> 使用大于等于 0.1.2 但小于 0.2 的版本
    pod 'AFNetworking', '~> 0.1' --> 使用大于等于 0.1 但小于 1.0 的版本
    pod 'AFNetworking', '~> 0' --> 高于 0 的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

最后给出一个做过的项目的Podfile文件,其内容如下:

platform:ios,'10.0'

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/aliyun/aliyun-specs.git'

inhibit_all_warnings!
  target 'RSXS' do
    #use_frameworks!
  pod 'MJExtension', '~> 3.0.15'
  pod 'AFNetworking', '~> 3.2.1'
  pod 'Masonry'
  pod 'SDWebImage', '~> 4.4.1'
  pod 'MJRefresh', '~> 3.1.15.3'
  pod 'MBProgressHUD', '~> 1.1.0'
  pod 'SDCycleScrollView', '~> 1.75'
  pod 'MSWeakTimer', '~> 1.1.0'
  pod 'WechatOpenSDK'
  pod 'CocoaSecurity', '~> 1.2.4'
  pod 'DTCoreText', '~> 1.6.21'
  pod 'FMDB', '~> 2.7.2'
  pod 'FXBlurView', '~> 1.6.4'
  pod 'AlicloudFeedback', '~> 3.3.6'
  pod 'RDVTabBarController', '~> 1.1.9'
  pod 'RollingNotice', '~> 1.0.5.2'
  pod 'SXWaveAnimate', '~> 2.0.0'
  
  pod 'UMCCommon'
  # U-Share SDK UI模块(分享面板,建议添加)
  pod 'UMCShare/UI'
  
  #集成微信(精简版0.2M)
  pod 'UMCShare/Social/ReducedWeChat'
  
  #集成QQ/QZone/TIM(完整版7.6M)
  pod 'UMCShare/Social/QQ'
  
  #集成新浪微博(完整版25.3M)
  pod 'UMCShare/Social/Sina'
  
  #集成统计SDK
  pod 'UMCAnalytics'
  pod 'Reveal-SDK', :configurations => ['Debug']
  
  #集成极光推送
  pod 'JPush'
  pod 'KMNavigationBarTransition'
  pod 'UITableView+FDTemplateLayoutCell'
  pod 'HCSStarRatingView', '~> 1.5'
  pod 'Bugly'
  
  #pod 'Fabric'
  #pod 'Crashlytics'
  #pod 'Flurry-iOS-SDK/FlurrySDK'
  #pod 'CocoaDebug', :configurations => ['Debug']
  pod 'TTTAttributedLabel', '~> 2.0.0'
  pod 'Bytedance-UnionAD'
  pod 'SDWebImage/GIF'
  pod 'FLAnimatedImage'
end

Podfile.lock文件

  • 在编辑完Podfile文件之后,第一次执行pod install命令,Cocoapods就会按照Podfile文件中内容,去加载链接所有的第三库,加载完成之后,就会生成一个Podfile.lock文件,也就是说Podfile.lock文件是在第一次pod install成功后生成的,它会将所有加载的第三方库的版本信息全部记录保存下来;
PODS:
  - AFNetworking (3.0.1):
    - AFNetworking/NSURLSession (= 3.0.1)
    - AFNetworking/Reachability (= 3.0.1)
    - AFNetworking/Security (= 3.0.1)
    - AFNetworking/Serialization (= 3.0.1)
    - AFNetworking/UIKit (= 3.0.1)
  - AFNetworking/NSURLSession (3.0.1):
    - AFNetworking/Reachability
    - AFNetworking/Security
    - AFNetworking/Serialization
  - AFNetworking/Reachability (3.0.1)
  - AFNetworking/Security (3.0.1)
  - AFNetworking/Serialization (3.0.1)
  - AFNetworking/UIKit (3.0.1):
    - AFNetworking/NSURLSession
  - Masonry (0.6.4)

DEPENDENCIES:
  - AFNetworking (= 3.0.1)
  - Masonry (~> 0.6.2)

SPEC REPOS:
  trunk:
    - AFNetworking
    - Masonry

SPEC CHECKSUMS:
  AFNetworking: 20d8749e03e45f1e5c046ad0b647e0b07bcdd91f
  Masonry: 281802d04d787ea2973179ee8bcb50500579ede2

PODFILE CHECKSUM: 91497ff1e149c86256edcfe4055d715f641290db

COCOAPODS: 1.10.2
  • 看到Podfile.lock文件不仅会记录所有导入第三方库的信息,还记录了Cocoapods工具当前使用的版本信息,COCOAPODS: 1.10.2

pod install与pod update命令的区别

  • 每次执行pod install命令都会去下载Podfile.lock文件中没有记录的新添加导入的第三方库,或者有移除指定的第三方库,就会移除;

  • 如果第三方库没有指定版本号:

    • 当第一次执行pod install命令时,那么下载的是最新的版本,同时将第三方库的版本号记录在Podfile.lock文件中;
    • 以后再执行pod install命令时,即使第三方库已经更新了新的版本,pod不会下载新的版本,依然会维持第一次执行pod install命令时的版本;
    • pod update会检测第三方库是否更新了新的版本,若有更新,会下载最新的版本;
  • 如果第三方库指定了特定的版本号:

    • 例如pod 'AFNetworking', '2.0',第一次执行pod install命令时,下载的是2.0版本,同时将第三方库的版本号记录在Podfile.lock文件中;以后执行pod install命令时,都不会更新AFNetworking,一直是2.0版本;
    • 执行pod update,不会更新AFNetworking的版本号,因为版本已经确定为2.0版本;
  • 如果第三方库指定的是范围版本号:

    • 例如pod 'Masonry', '~> 0.6.2',那么第一次执行pod install命令时,会下载大于 0.6.2且小于1.0.0的版本,有可能下载的不是最新的版本,同时将第三方库的版本号记录在Podfile.lock文件中;以后执行pod install命令时,只要当前版本号满足了 '~> 0.6.2',就不会去下载别的版本;
    • 执行pod update,只要当前版本号满足了 '~> 0.6.2',就不会去下载别的版本,也就是说即使第三方库有了更新也不会更新到最新的版本;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容