CocoaPods1.4.0升级1.6.0总结

2019-01-11  本文已影响152人  HarlanHuang

一、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 就可以了

上一篇下一篇

猜你喜欢

热点阅读