美文网首页
Cocoapods工具02 -- pods文件与命令介绍

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

作者: YanZi_33 | 来源:发表于2021-08-21 18:20 被阅读0次

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',就不会去下载别的版本,也就是说即使第三方库有了更新也不会更新到最新的版本;

相关文章

网友评论

      本文标题:Cocoapods工具02 -- pods文件与命令介绍

      本文链接:https://www.haomeiwen.com/subject/nfyabltx.html