Xcode路径改变导致CocoaPods报错的解决办法

本文记录了一次因Xcode版本切换导致的CocoaPods无法正常工作的问题及解决方案。作者在尝试安装第三方库时遇到错误,通过调整Xcode的选择路径最终解决了这一难题。

本博客迁移来自:http://www.jianshu.com/users/465865c268ed/latest_articles
这几天心血来潮,更新了下Mac系统,然后装了下Xcode8装逼,接下来就懵逼了。
由于之前的Xcode是7.1的一直没升级,本想体验体验Xcode8的,所以装完Xcode8之后Xcode7.1也没有删掉,一直两个Xcode一起用着,用了几天之后觉得Xcode8挺稳定的,于是就删了Xcode7,故事由此开始了。
删了Xcode7的几天后,发现Xcode8 bug还是蛮多的,不是很稳定,并且大家都不怎么推荐这么早就使用Xcode8,于是忍痛割爱(要知道这可是我下了好几个小时才下下来的啊)把Xcode8删了准备用回Xcode7.1。于是我就从废纸篓里恢复了几天前删除了的Xcode7.1.庆幸竟然还能用(暗暗窃喜).
今天由于要新增一个第三方,所以我很熟练的vim Podfile
巴拉巴拉巴拉然后再 pod install,接下来就懵逼了。。。。
报如下错误:

Setting up CocoaPods master repo
  $ /usr/bin/git remote set-url origin https://github.com/CocoaPods/Specs.git
  xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist, use `xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools (or see `man xcode-select`)
  [!] Failed: /usr/bin/git remote set-url origin https://github.com/CocoaPods/Specs.git
  $ /usr/bin/git checkout master
  xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist, use `xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools (or see `man xcode-select`)
  [!] Failed: /usr/bin/git checkout master
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master-1`.
(The `master` repo is not a git repo.)
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.

试了几次都不行,又换pod update还是不行,于是我开始怀疑是不是COcoaPods炸了,还是我升级了系统之后炸了。。。。想想不科学,应该是XCode的问题,仔细阅读错误(原谅我英文差),貌似看懂了那么一点,可能是我删了XCode又恢复导致的。就这么一百度果然还真是的。
一句命令搞定:sudo xcode-select –switch /Applications/Xcode.app(后面的地址直接打开程序把Xcode往这里拖即可)。完事后再pod install。。biubiubiu出现了熟悉的“Analyzing dependencies”字样,最后提示“Pod installation complete! There are 15 dependencies from the Podfile and 16 total pods installed.”。ok成功了。
以上记录我遇到的坑爹错误,给初次遇到这样问题的童鞋一点思路,不至于搓手不急(当时CocoaPods不能用我心中一万个草泥马崩腾啊)

<think>我们正在解决用户删除 Firebase 后构建 Xcode 项目时出现的 "Command PhaseScriptExecution failed with a nonzero exit code" 错误。根据之前的错误分析和引用内容,我们可以采取以下步骤: 可能的原因和解决方案: 1. 缓存问题:删除 Firebase 后,可能残留了一些缓存文件,导致构建脚本执行失败。可以尝试清理缓存并重新构建。 2. Pod 依赖问题:删除 Firebase 后,Podfile 的依赖关系可能发生了变化,需要重新安装 Pods。 3. 脚本执行环境问题:如之前提到的 User Script Sandboxing 或 Node.js 路径问题。 具体步骤: 步骤1:清理项目 - 在 Xcode 中,选择 Product -> Clean Build Folder (或按住 Option 键,此时 Clean 会变成 Clean Build Folder) - 或者通过命令行清理 DerivedData: ```bash rm -rf ~/Library/Developer/Xcode/DerivedData ``` 步骤2:重新安装 Pod 依赖 - 进入项目的 ios 目录(或包含 Podfile 的目录) ```bash cd ios ``` - 执行 pod deintegrate 以移除现有的 Pods 集成 ```bash pod deintegrate ``` - 删除 Podfile.lock 和 Pods 目录(如果存在) ```bash rm -rf Podfile.lock Pods ``` - 重新安装 Pods(如果是 M1 芯片,可能需要使用 arch -x86_64) ```bash pod install ``` 或者 ```bash arch -x86_64 pod install ``` 步骤3:检查 Node 模块和项目文件 - 回到项目根目录,确保 node_modules 是最新的(如果删除了 Firebase,可能涉及 JavaScript 代码的更改,需要重新安装 npm 包) ```bash cd .. rm -rf node_modules yarn install # 或 npm install ``` 步骤4:检查 Firebase 是否完全删除 - 确保在 Podfile 中已经删除了所有 Firebase 相关的行(如 pod 'Firebase/Analytics' 等)[^1]。 - 检查项目代码中是否还有残留的 Firebase 导入或使用。 步骤5:重启 Xcode 和电脑 - 有时候简单的重启可以解决缓存问题(如引用[3]所述)[^3]。 步骤6:检查构建脚本(Phase Scripts) - 在 Xcode 中,打开项目,选择 target,进入 Build Phases 选项卡。 - 检查是否有与 Firebase 相关的脚本(例如:Upload Symbols 脚本用于 Crashlytics)。如果有,删除它们。 - 检查其他脚本(如 Bundle React Native code and images)是否正常。可以尝试临时注释掉脚本内容,逐步排查。 步骤7:查看详细的错误日志 - 前往 ~/Library/Developer/Xcode/DerivedData,找到项目对应的文件夹(名称可能为项目名加一串字符)。 - 进入 Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator(或对应的配置目录)。 - 查找与脚本失败相关的日志文件(如 codegen-*.log 或其他脚本日志),这些日志可能会提供更具体的错误信息[^2]。 如果以上步骤仍然不能解决问题,可以考虑以下额外措施: - 更新 CocoaPods:`sudo gem install cocoapods` - 重置 CocoaPods 仓库:`pod repo update` - 尝试使用 Xcode 的命令行工具构建:`xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme -destination 'platform=iOS Simulator,name=iPhone 13' build` 注意:在删除 Firebase 后,确保所有对 Firebase 的引用(包括代码、配置文件、plist 文件等)都已移除,否则可能导致编译错误。 最后,重新构建项目。 如果问题仍然存在,请提供具体的错误日志以便进一步分析。 相关问题: 1. 如何彻底移除 Firebase 依赖? 2. Xcode 构建失败后如何查看详细错误日志? 3. CocoaPods 常见问题及解决方法有哪些?</think>### Xcode 删除 Firebase 后报错解决方案 当删除 Firebase 后出现 `Command PhaseScriptExecution failed with a nonzero exit code` 错误,通常是由于残留配置或脚本依赖导致的。请按以下步骤解决: #### 1️⃣ 清理 Firebase 残留配置 ```bash # 进入 iOS 项目目录 cd ios # 完全移除 Pod 集成 pod deintegrate # 删除 Pod 相关文件 rm -rf Podfile.lock Pods/ # 清理 Xcode 缓存 rm -rf ~/Library/Developer/Xcode/DerivedData ``` #### 2️⃣ 修正 Podfile 配置 在 `Podfile` 中确保 **完全删除** 所有 Firebase 相关行: ```diff - pod 'Firebase/Analytics' - pod 'Firebase/RemoteConfig' - pod 'Firebase/Crashlytics','10.2.0' - pod 'Firebase/Messaging' ``` 保存后重新安装依赖: ```bash # M1 芯片使用: arch -x86_64 pod install --repo-update # Intel 芯片使用: pod install --repo-update ``` #### 3️⃣ 检查构建脚本残留 在 Xcode 中: 1. 打开项目 → **Build Phases** 选项卡 2. 检查是否有 Firebase 相关的脚本(如 `Upload Symbols` 脚本) 3. 完全删除这些脚本阶段 #### 4️⃣ 清理项目环境 ```bash # 删除 node_modules rm -rf node_modules # 重新安装 JS 依赖 yarn install # 或 npm install # 清理 iOS 构建 cd ios && xcodebuild clean ``` #### 5️⃣ 重启系统与 Xcode 1. 完全退出 Xcode 2. 重启电脑(许多缓存问题可通过重启解决)[^3] 3. 重新打开项目尝试构建 #### 6️⃣ 检查代码残留 确保在项目中全局搜索并删除: - `#import <Firebase.h>` - `[FIRApp configure]` - `GoogleService-Info.plist` 文件 #### 若仍失败需检查日志 1. 打开路径:`~/Library/Developer/Xcode/DerivedData` 2. 找到项目文件夹 → `Build/Intermediates.noindex/Pods.build` 3. 查看 `codegen-*.log` 文件获取具体错误原因[^2] ### 关键预防措施 - 使用版本控制(如 Git)在修改 Podfile 前提交代码 - 删除依赖时同步移除相关配置文件和代码引用 - 定期执行 `pod deintegrate` 彻底清理环境 完成上述步骤后,90% 的 Firebase 移除相关构建错误可解决。若问题持续,请提供 `codegen` 日志内容进一步分析。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值