美文网首页
组件化第二篇:CocoaPods的使用

组件化第二篇:CocoaPods的使用

作者: yanhooIT | 来源:发表于2017-06-15 19:12 被阅读69次

常用命令总结写在前面,具体分析往下看

# 检索框架
pod search 框架名关键字

# 创建项目,并cd到工程文件所在目录,创建Podfile文件
pod init

# ------------------------------Podfile文件内容(建议使用Xcode进行编辑)------------------------------
# 支持的iOS系统的最低版本
platform:ios,'8.0'
# 忽略引入库的所有警告(强迫症者的福音啊)
inhibit_all_warnings!
# 使用framework(包含swift库就必须使用此设置,纯OC库可以不设置)
use_frameworks!

# 下面两行是指明依赖库的来源地址
source 'https://gitclub.cn/CocoaPods/Specs.git'
source '你自己的私有库镜像源'

# 做一些安装之前的更改
pre_install do |installer| 
    ...
end

# 依赖目标一般为项目名称
# 针对MyApp target引入AFNetworking
# 针对MyAppTests target引入OCMock,
target 'MyApp' do 
    pod 'AFNetworking', '~> 3.0' 
    target 'MyAppTests' do
       inherit! :search_paths 
       pod 'OCMock', '~> 2.0.1' 
    end
end

# >>>>>以下命令一般采取系统默认设置,无特别需要无需设置<<<<<
# install! 这个命令是cocoapods声明的一个安装命令,用于安装引入Podfile里面的依赖库
install! 'cocoapods', 
  :deterministic_uuids => false, 
  :integrate_targets => false

# 默认情况下,我们不需要指定,直接使用与Podfile所在目录的工程名一样就可以了。如果要指定另外的名称,而不是使用工程的名称,可以这样指定
workspace 'MyWorkspace'

# 作用于哪个工程
project 'MyProject'

# 这个是cocoapods的一些配置,官网并没有太详细的说明,一般采取默认就好了,也就是不写.
post_install do |installer|       
   installer.pods_project.targets.each do |target| 
     puts target.name 
   end
end
# >>>>>以下命令一般采取系统默认设置,无特别需要无需设置<<<<<

# ------------------------------Podfile文件内容(建议使用Xcode进行编辑)------------------------------

# 注意pod install和pod update的选择
# 安装或更新三方库请使用下面的命令,避免直接使用pod update、pod install
# 都说CocoaPods1.0.1之后就可以直接执行pod update、pod install命令,
# 并不会去更新远程仓库,但是实践告诉我不行,所以还是建议用下面的命令

# 安装框架
pod install
# 更新框架
pod update --verbose --no-repo-update

Cocopods工作原理图

Cocopods工作原理.png

检索第三方框架

  • 检索命令
pod search 框架关键字
  • 命令作用:从本地缓存第三方框架描述信息生成的检索文件中检索相关框架的信息
  • 遇到的问题
    • 问题描述:Unable to find a pod with name, author, summary, or description matching 'xxx'
    • 解决方案:删除cocoapods索引文件
    sudo rm ~/Library/Caches/CocoaPods/search_index.json
    

安装第三方框架

  • 使用Xcode新建一个工程
  • 打开终端,cd到工程目录下
  • 生成Podfile文件
    • Podfile文件是使用ruby语法编写的框架依赖描述文件,就是告诉cocoapods需要下载哪些框架
    • Podfile文件配置语法详见Podfile语法参考(译)
    • 创建命令:pod init
    • 使用Xcode or vim编辑器编辑Podfile文件
    • 在终端中使用vim编辑器编辑Podfile步骤
      • vi podfile在vim编辑器中打开podfile文件
      • i键进入编辑模式
      • 编辑完成后,按esc键退出编辑模式
      • :wq组合键并回车退出vim编辑器
      • 记得在Podfile文件的顶部加入下面的repo源地址:
      source 'https://gitclub.cn/CocoaPods/Specs.git'
      
    • Podfile示例
      # 指定的repo镜像源
      source 'https://gitclub.cn/CocoaPods/Specs.git'
      
      # 最低支持的iOS版本
      platform :ios, '8.0'
      
      # 依赖目标一般为项目名称
      target '依赖目标' do
          # 以framework的形式使用第三方库
          use_frameworks!
      
          pod 'AFNetworking', '~> 3.0'    # 网络库
          pod 'SDWebImage', '~>3.8'       # 图片加载
          pod 'SVProgressHUD'             # Loading框 + 提示框
          pod 'MJRefresh'                 # 下拉刷新
          pod 'HandyFrame'                # 使用frame布局
          pod 'YYModel'                   # 模型转换
      end
      
  • 安装框架
    // --verbose表示打印详细信息
    // --no-repo-update表示不更新本地框架信息源
    
    // 安装框架,此命令在新版本中不会更新索引库
    pod install
    // 更新框架,防止更新索引库
    pod update --verbose --no-repo-update
    
  • 遇到的问题
    • 问题描述:The dependency 'SSZipArchive', '~> 1.6.2' is not used in any concrete target.
    • 解决方案:指定依赖目标
    • 从cocoapods 1.0.1及后续版本必须明确指定依赖目标
    # 依赖目标一般为项目名称
    target '依赖目标' do
    
  • 安装完后生成的文件
    • Podfile.lock文件:记录上一次下载的框架的版本号
    • *.xcworkspace文件:工作区文件
  • 以后要添加新的库,就编辑Podfile文件,cd到工程根目录下,然后执行pod install --no-repo-update命令就可以了
  • pod installpod update没有指定框架版本号时是有区别
    • pod installPodfile.lock文件存在时直接读取并下载框架,如果是团队开发为了保证版本一致,建议使用此命令
    • pod update直接读取Podfile文件中的信息,不管Podfile.lock文件是否存在,所以在团队开发时可能导致大家使用的第三方库的版本不一致
  • pod installpod update选择
    • 一般情况下,第一次从共享库把项目下载下来之后,应该使用pod install命令安装,而不是选择pod update,目的是为了保证大家使用的第三方框架版本一致
    • 如果以后大家需要升级第三方框架,那么大家约定好统一再执行一次pod update
    • 建议在编写podfile文件时,明确指定第三方库的版本,格式如下:pod '第三方库名称', '~> 版本号',这样不管使用pod install还是pod update效果都是一致的

参考资料

相关文章

网友评论

      本文标题:组件化第二篇:CocoaPods的使用

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