macOS下Unity2017.4.40f1集成Appodeal时CocoaPods安装失败咨询
故障核心原因
- Unity 2017内置的iOS Resolver(Appodeal广告插件依赖的External Dependency Manager for Unity组件)不会加载终端Shell配置的自定义环境变量,启动时默认优先调用macOS Mojave自带的系统Ruby环境(路径为
/usr/bin/ruby,版本为报错中提到的2.3.0),完全无法识别你通过brew、rvm等工具安装的自定义Ruby版本——不管终端执行ruby -v输出什么版本,Resolver运行时都不会调用这些自定义路径下的Ruby程序。 - 最新版CocoaPods依赖的zeitwerk组件最低要求Ruby版本≥2.5,系统自带的Ruby 2.3.0不满足依赖要求,因此Resolver自动执行
gem install cocoapods --user-install命令时必然触发版本报错。 - 你手动安装的CocoaPods如果部署在自定义Ruby的gem目录下,该路径不在Resolver的默认搜索范围内,自然无法被识别为已安装状态。
- 你在
.zshrc/.bash_profile中配置的$PATH环境变量仅对终端会话生效,从Launchpad启动的macOS GUI应用(包括Unity)默认不会继承这些终端配置,因此修改Shell环境变量的操作对Unity完全无效。
分步修复方案
快速修复方案(推荐,适配Unity 2017 + Mojave环境)
不需要改环境变量、不需要切换Ruby版本,直接对齐Resolver的搜索路径即可:
- 终端执行命令安装兼容版本的CocoaPods,不要安装最新版:
选择1.11.3版本的原因:该版本是最后一个同时兼容Ruby 2.5、Unity 2017内置iOS Resolver、Appodeal SDK的稳定版,1.12.0以上版本会出现新的依赖兼容问题# 如果你用brew装的Ruby 2.5+,直接执行 gem install cocoapods -v 1.11.3 # 安装完成后确认pod可用 pod --version - 直接把已安装好的pod程序软链接到Resolver默认搜索的系统Ruby gem路径下,执行两条命令:
mkdir -p /Users/developer/.gem/ruby/2.3.0/bin ln -s $(which pod) /Users/developer/.gem/ruby/2.3.0/bin/pod - 打开Unity,打开顶部菜单
Assets > External Dependency Manager > iOS Resolver > Settings,取消勾选Auto Install CocoaPods选项,禁止Resolver自动执行CocoaPods安装逻辑。 - 依次执行
Assets > External Dependency Manager > iOS Resolver > Resolve,等待依赖解析完成即可,不会再出现CocoaPods安装失败的报错,后续可正常导出Xcode工程完成Appodeal集成。
彻底修复方案(适配所有版本Unity)
如果后续要升级Unity版本,可以配置macOS全局GUI应用环境变量,让所有GUI程序都能识别你自定义安装的Ruby和CocoaPods:
- 终端执行命令配置全局PATH:
输入系统密码确认后,必须重启电脑让配置生效。sudo launchctl config user path "/usr/local/bin:$(brew --prefix ruby)/bin:$(gem environment gemdir)/bin:$PATH" - 重启后安装1.11.3版本CocoaPods,打开Unity取消自动安装CocoaPods的选项,重新执行依赖解析即可。
注意:不要升级Appodeal插件自带的External Dependency Manager(EDM4U)到最新版本,高版本EDM4U已经放弃对Unity 2017的兼容,升级后会出现API缺失报错。
内容的提问来源于stack exchange,提问作者Benjamin Rutford
相关产品推荐
相关产品推荐

