美文网首页
CocoaPods1.4.0升级1.6.0总结

CocoaPods1.4.0升级1.6.0总结

作者: HarlanHuang | 来源:发表于2019-01-11 17:14 被阅读152次

    一、pod升级步骤,以下两种方式:

    1、如果不通过 gem 安装,直接使用的 pod

    1. gem list --local | grep cocoapods 只查看pod 列表 (或者 gem list 查看所有 gem 安装的列表)
      sudo gem uninstall cocoapods 卸载旧版本pod
      sudo gem install cocoapods -v 1.6.0.beta.2 安装新版本pod

    2. 如果是通过 gem 安装,则执行以下操作:
      修改 gemPodfile 文件中的 pod 版本为1.6.0.beta.2
      执行 bundle install
      如果报错,可能是gem库比较旧,依次执行以下命令:
      gem update // 更新gem
      gem install bundler // 安装bundler
      bundle install 安装 gemFile中的文件

    二、问题记录:

    1、头文件导入方式<> 报错

    解决办法:改为""导入

    2、framework类型的头文件报错

    解决办法:查看报错在哪个文件下,根据文件找到所在的项目,在Framework Search Path中添加报错的文件的路径

    举例:
    友盟头文件找不到,在所在的项目Framework Search Path中添加以下

    $(inherited)
    "${PODS_ROOT}/UMCCommon"
    "${PODS_ROOT}/UMCAnalytics"
    "${PODS_ROOT}/UMCSecurityPlugins/thirdparties” -recursive
    "${PODS_ROOT}/UMCShare" -recursive
    

    AdhocSDK找不到,添加

    "${PODS_ROOT}/AdhocSDK"
    

    需要注意的地方:
    第三方 framework 的文件目录,如果在根目录下面还有深层次的 framework,为了能引用到里面的文件,则需要添加recursive标签。如 UMShare和UMCSecurityPlugins

    3、不是 framework 类型的库在引入头文件时报错,需要查看报错位置所在的项目中是否在 Header Search Paths 中引用了这个文件,如果没有引用,需要引用,如果已经引用,需要注意引用路径是否正确,比如:

    一般是这样的

    "${PODS_ROOT}/Headers/Public/AFNetworking"
    

    但是这个 lottie 库是这样的

    ”${PODS_ROOT}/Headers/Public/lottie-ios/Lottie"
    

    全部修改完成后 RUN 成功

    4、手动添加引用路径 在重新 pod install 的时候会失效,需要重新添加一遍

    解决办法:使用 pod 钩子自动添加,在 podfile 中添加以下代码

    post_install do |installer|
      # 需要指定编译版本的第三方的名称
      umTargets = ['YCWatchDogModular', 'YCMyFrendSystemModule', 'YCTeacherShowComponent', 'YCVideoPlayerComponent']
      umadTargets = ['YCH5PlusPlugin', 'YCPaymentRelatedModular', 'YCLogInModular']
    
      installer.pods_project.targets.each do |target|
        if umTargets.include? target.name
          target.build_configurations.each do |config|
            config.build_settings['FRAMEWORK_SEARCH_PATHS'] = '$(inherited) "${PODS_ROOT}/UMCCommon" "${PODS_ROOT}/UMCAnalytics" "${PODS_ROOT}/UMCSecurityPlugins/thirdparties"/** "${PODS_ROOT}/UMCShare"/**'
          end
        end
    
        if umadTargets.include? target.name
          target.build_configurations.each do |config|
            config.build_settings['FRAMEWORK_SEARCH_PATHS'] = '$(inherited) "${PODS_ROOT}/UMCCommon" "${PODS_ROOT}/UMCAnalytics" "${PODS_ROOT}/UMCSecurityPlugins/thirdparties"/** "${PODS_ROOT}/UMCShare"/** "${PODS_ROOT}/AdhocSDK"'
          end
        end
      end
    end
    

    然后重新pod install 就可以了

    相关文章

      网友评论

          本文标题:CocoaPods1.4.0升级1.6.0总结

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