CocoaPods1.4.0升级1.6.0总结
2019-01-11 本文已影响152人
HarlanHuang
一、pod升级步骤,以下两种方式:
1、如果不通过 gem 安装,直接使用的 pod
-
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 -
如果是通过 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 就可以了