Xcode 10.2.1命令PhaseScriptExecution失败,退出代码非零

Emi*_*tan 6 xcode ios cocoapods swift xcode10.2.1

Showing Recent Messages:-1: mkdir -p /Users/spritzindia/Library/Developer/Xcode/DerivedData/Contigo-atftiouzrdopcmcpprphpilawwzm/Build/Products/Debug-iphonesimulator/Contigo.app/Frameworks
Run Code Online (Sandbox Code Playgroud)

显示最近的消息:-1:rsync --delete -av --filter P。*。?????? --filter“-CVS /” --filter“-.svn /” --filter“-.git /” --filter“-.hg /” --filter“-Headers” --filter“-PrivateHeaders”- -filter“-模块”“ /用户/pothi/Library/Developer/Xcode/DerivedData/Contigo-atftiouzrdopcmcpprphpilawwzm/Build/Products/Debug-iphonesimulator/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework”“ /用户/ pothi / Library / Developer / X DerivedData / Contigo-atftiouzrdopcmcpprphpilawwzm / Build / Products / Debug-iphonesimulator / Contigo.app / Frameworks”

命令PhaseScriptExecution失败,退出代码非零

我删除了衍生数据。我已经尝试过:钥匙串访问->右键单击登录->再次锁定并解锁->清除Xcode项目,重新启动机器,没有用

尝试归档项目时,如何解决“命令PhaseScriptExecution失败,退出代码非零”错误。

我正在使用那些图书馆

pod 'IQKeyboardManagerSwift'
pod 'SDWebImage', '~> 4.0'
pod 'KRPullLoader'
pod 'Paytm-Payments'
Run Code Online (Sandbox Code Playgroud)

Anu*_*rma 97

在尝试了所有解决方案后,我缺少的是在以下位置启用此选项:

目标 -> 构建阶段 -> 嵌入式 pods 框架

在较新的版本中,它可能被列为:

目标 -> 构建阶段 -> 捆绑 React Native 代码和图像

  • 仅在安装时运行脚本

构建阶段

  • 这就是 build 中的工作。但当我再次存档项目时显示错误! (12认同)
  • 谁能解释为什么这个答案有效?这还会导致我应该注意的任何意外行为吗? (7认同)
  • 现在它已更改,它被声明为运行脚本:仅适用于安装版本 (6认同)
  • 如果这不是您的答案,则 XCode 14.3(~2023 年 4 月)中最近存在一个错误,可能会导致此错误。这里有简单的解决方案:/sf/ask/3730266711/#75945651 (5认同)
  • @NickLeGorrec,请检查以下链接以了解它们:/sf/ask/413923961/ https:// stackoverflow.com/questions/6910901/how-do-i-print-a-list-of-build-settings-in-xcode-project (2认同)
  • 在设备上调试安装(从 Xcode 构建和运行)不算“安装”。运行脚本仅在归档时运行 (2认同)
  • 非常感谢,花了一整天尝试其他解决方案,这解决了问题! (2认同)

Sch*_*are 77

发生这种情况可能是由于 XCode 14.3 和 cocoapods 最近出现的问题,

有两种解决方案

1 - 更新 cocoapods,因为最近有修复:sudo gem update cocoapods参考:https ://github.com/CocoaPods/CocoaPods/issues/11808

2 - 另一个解决方法是更新所有生成的 ...-frameworks.sh 文件,以将 -f 标志添加到对 readlink 的调用中。换句话说,需要替换:

源=“$(读链接“$ {源}”)”

源=“$(readlink -f“$ {源}”)”

用于查找frameworks.sh路径。Pods --> 目标支持文件 --> Pods-(Project_Name) --> Frameworks.sh 第二个解决方案来自此处:https://developer.apple.com/forums/thread/725230 ?login=true

  • 这对我有用。用于查找frameworks.sh路径。Pods --> 目标支持文件 --> Pods-(Project_Name) --> Frameworks.sh (6认同)
  • -f 之前已经添加了,我没有更改它。但我在构建时仍然遇到同样的错误 (3认同)

Abh*_*edi 60

从 ios 目录运行以下命令:

  1. pod deintegrate
  2. pod install
  3. XCode 清洁构建

或者,单线

pod deintegrate; pod install

  • 这对我不起作用。 (21认同)

iOS*_*iOS 48

我在Xcode 13中遇到了同样的问题。在遇到同样的问题后,我更新了 Crashlytics SDK。就我而言,我遵循了解决方案2

解决方案1:

我已从Run Script中删除了数据。

-> 目标 -> 转到构建设置 -> 单击运行脚本 -> 删除脚本数据

在此输入图像描述

解决方案2:

如果您的项目必须使用脚本,只需选择仅安装构建选项。

选择仅用于安装版本选项

在此输入图像描述

脚本:

"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/#####/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Run Code Online (Sandbox Code Playgroud)

在上面的脚本中#####是应用程序名称,如果需要,请替换为您的应用程序名称。如果没有,请使用下面的脚本。

"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Run Code Online (Sandbox Code Playgroud)

解决方案3

更重要的一件事是您必须正确设置文件的路径。

找到以下示例路径。

您有多个 google services plist 堆,在本例中您要维护 2 个不同的文件。您的 google service info plist 文件位于FireBase, Dev下。在这种情况下,您必须正确添加这些文件路径。否则你会得到同样的错误。

"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/#####/Firebase/Dev/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Run Code Online (Sandbox Code Playgroud)

解决方案3文件结构:

在此输入图像描述

  • 解决方案 2 对我有用。设备 Mac M2、Xcode 14.1 (2认同)

Md *_*aif 40

2024年解决方案

第1步:打开xcode并搜索以下行

source="$(readlink "${source}")"
Run Code Online (Sandbox Code Playgroud)

文件目录是:ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh

步骤2:将代码中搜索到的行替换为-f

source="$(readlink "${source}")"
Run Code Online (Sandbox Code Playgroud)

将其更改为:

source="$(readlink -f "${source}")"
Run Code Online (Sandbox Code Playgroud)


Has*_*ved 27

Xcode -> File -> Workspace Setting -> 将 Build System 更改为 Legacy Build System。

就是这样。玩得开心

  • 这可能会解决问题,但并不是理想的解决方案,因为 XCode New Build System 旨在优化构建过程。 (15认同)
  • 这会返回 Permission Denied for Pods/Target Support Files 目录 (3认同)
  • 你没有解决问题,你只是隐藏了它们。 (3认同)
  • 将设置更改为“旧版构建系统”至少向我显示了错误消息。我解决了这个问题,然后再次将其设置为新的构建设置,谢谢 Haseeb! (2认同)

小智 20

转到钥匙串访问->右键单击登录->再次锁定和解锁->清除Xcode项目并再次进行构建。

  • 我禁用了锁定/解锁选项。有什么解决办法吗? (56认同)
  • 你好,fork,你对这个问题还有什么建议吗?这个解决方案对我不起作用,我发布的问题的链接是 - /sf/ask/4091148071/ -前任 (11认同)
  • @AndrewKoster Keychain Access 是 Mac 实用程序中的一个程序。Cmd Tab“钥匙串访问”来找到它 (10认同)
  • 什么是“钥匙串访问”?请提供上下文。 (6认同)
  • 对我来说,还删除了“Pods”和“podfile.lock”并重新安装了 Pod (2认同)
  • 干净的构建 - >改变模拟器/设备对我有用。 (2认同)

小智 16

对我来说,我删除了 Crashlytics、Fabric 和 FirebaseCrashlytics。所以有了 Fabric 的脚本(Run Script)。因此,由于应用程序首先运行并且我已经删除了框架,因此我收到了此错误。所以我删除了 Fabrics 的 Run Script 选项卡,然后它工作得很好。

  • 对我来说同样的问题 - 删除 Crashlytics - 如果您转到“目标”>“构建阶段”>“运行脚本”并删除相关行 - 全部已修复! (3认同)

peg*_*peg 14

重新启动对我有用... Mac OS 重新启动,而不是 xCode 重新启动...


Abi*_*san 11

原因

此构建阶段还允许您提供输入和输出文件的列表。当未提供输入和输出文件时,脚本始终运行。提供输入和输出文件时,脚本仅在以前从未运行过、输入文件之一已更改或输出文件之一丢失的情况下运行

如果您使用的是 cocoapods,则可能不需要额外的运行脚本。

解决方案

所以解决方案是删除脚本,如下所示:

在此输入图像描述

  • 当我们尝试将其部署到真实设备上时,这会导致问题吗? (2认同)

ben*_*oom 10

我有一个类似的错误

/{path to project root}/Pods/Target Support Files/Pods-{project name}/Pods-{project name}-frameworks.sh: Permission denied
Command PhaseScriptExecution failed with a nonzero exit code
Run Code Online (Sandbox Code Playgroud)

就我而言,我收到了一个包含 Pods 文件夹的存储库 zip 文件。事实证明,在它最初创建和发送给我之间的某个时刻,其中的 *.sh 文件Pods/Target Support Files/Pods-{PROJECT}/全部失去了执行权限。提供这些文件+x就是解决方案

例如:chmod +x(错误中的文件名)

就我而言:chmod +x Pods-TestExample-frameworks.sh


小智 10

在终端中转到项目路径并按照以下步骤操作

  1. pod deintegrate

  2. pod cache clean --all

  3. pod install


小智 9

Xcode 12.2 解决方案:转到:

  1. 构建设置 -> 排除的架构
  2. 删除“arm64”


Day*_*vin 9

在 Xcode 12.4 中,经过几个小时的尝试找到了解决方案。

转到Target > Architectures 设置Build Active Architecture OnlyYESExcluded Architecturesx86_64 在此输入图像描述


小智 9

代码14.3

导致此错误的原因有很多,我在归档项目时遇到了 rsync 问题。

Cocoapods 现在存在问题,因为 Xcode 14.3 现在在框架的符号链接中使用相对路径。

要么等待 Cocoapods 版本 1.12.1 的发布,要么在 Pods-APPNAME-frameworks.sh 文件中进行以下简单更改:

代替:

if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink "${source}")"
fi
Run Code Online (Sandbox Code Playgroud)

和:

if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink -f "${source}")"
fi
Run Code Online (Sandbox Code Playgroud)

请注意,添加了 -f。

您可以在以下位置找到该文件

Pods > Target Support Files > Pods-'Your-ProductName' > Pods-YourProductName-Frameworks.sh

在任何文本编辑器中打开文件并进行更改。

该解决方案的原始来源可以在此链接中找到


Kun*_*jar 8

如果您的问题是运行自定义 shell 脚本 cp embed pods Frameworks 失败,那么这里就是您的答案

Xcode 14.3 及更高版本似乎存在问题。iOS 开发者论坛上有未解决的问题。

参考:https://developer.apple.com/forums/thread/725230 ?answerId=746897022#746897022

一个想法可能是降级到 14.2,看看它是否有效。

另一种无需降级的解决方法:在 Xcode 中打开项目。转到 Pods -> Target Support Files -> Pods-YOUR_APP-Frameworks 并将第 44 行更改为下面的

source="$(readlink -f "${source}")"
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您需要,请尝试此步骤: Xcode 11.5 1- 打开终端: cd Path_project 2- cd pod clean 3- pod install

如果没有任何改变,请执行此步骤

1- 打开目标的构建阶段 -> [CP] Embed Pods FrameWork 检查此字段 在此输入图像描述


Kre*_*kin 7

错误的另一个原因可能是 Xcode 在运行阶段运行脚本。

如果是这种情况,您有 2 个选择:

  1. 删除脚本(如果脚本不重要则有意义)

  2. 修改/更新脚本位置路径(Xcode可能无法找到脚本)

运行阶段脚本

就我而言,脚本很重要,所以我修改/更新了它的位置。

本来脚本位置路径是这样写的:

$SRCROOT/scripts/clean-assets.sh
Run Code Online (Sandbox Code Playgroud)

因为脚本路径包含空格(我将项目移动到新目录),所以我将路径更改为:

"$SRCROOT"/scripts/clean-assets.sh
Run Code Online (Sandbox Code Playgroud)

通过向SRCROOT添加引号,将其更改为"$SRCROOT",错误将会消失。


Raj*_*hra 7

由于 Firebase Crashlytics,我遇到了这个问题。在 目标 -> 构建阶段 -> 运行脚本

我把 Firebase Crashlytics 写成这样

${PODS_ROOT}/FirebaseCrashlytics/run
Run Code Online (Sandbox Code Playgroud)

我改变了它并把它放在双引号中

"${PODS_ROOT}/FirebaseCrashlytics/run"
Run Code Online (Sandbox Code Playgroud)


小智 6

对我来说,问题出在 xcode 使用的节点版本上。我的项目在 Expo 中构建良好,但在弹出后不在 Xcode 中。我在这里找到了答案:https : //github.com/expo/expo/issues/8488

  • 检查您是否拥有最新版本的节点

    $ node --version

  • 删除 /usr/local/bin/ 中的版本

    $ rm /usr/local/bin/node

  • 重新添加一个符号链接

    $ ln -s $(which node) /usr/local/bin/node


Yah*_*hya 6

如果您在 flutter 中遇到此问题。尝试从其他 IDE(例如 android studio 或 vs code)在真正的 iPhone 设备上运行该应用程序。

问题是 flutter SDK 缺少 iOS-profile-release。

所以通过运行 flutter 命令

flutter run
Run Code Online (Sandbox Code Playgroud)

它在运行之前下载丢失的东西,这解决了问题。


小智 5

适用于 Xcode 11、React Native 开发环境。当依赖项未更新时,我通常会遇到此问题。

您可以尝试按照以下步骤操作,这通常对我有用:

1-删除你的Podfile.lock(我喜欢在终端上使用命令“-rm -rf Podfile.lock”)

2-删除你的 Pods 文件夹(我喜欢在终端中使用命令“-rm -rf Pods”)

3-删除你的.xcworkspace

4-吊舱安装

5-将您的项目清除到 XCode> 产品> 清理构建文件夹


Fra*_*ara 5

在我的情况下,错误是由于我的机器空间不足造成的。删除旧版本解决了这个问题。


Kam*_*mov 5

如果你正在做Unity项目。您可能会收到此错误。

Command PhaseScriptExecution failed with a nonzero exit code
Run Code Online (Sandbox Code Playgroud)

解决办法很简单

https://forum.unity.com/threads/error-on-build.561706/

先决条件:安装了cocoapods

不需要:1. 安装“cocoapods”以在终端中安装运行以下行:$sudo gem install cocoapods

  1. 使用终端打开项目文件夹
  2. 运行这一行:chmod +x MapFileParser.sh
  3. 运行这一行:chmod +x process_symbols.sh

它对我有用)

我认为安装“cocoapods”没有必要,只需要第3、4步就足以解决,但是不行,你可以尝试一下。


Sia*_*ard 5

对我来说,解决方案在arch -x86_64 pod install我执行以下步骤之前,这些等都不起作用:

  1. 在终端中运行 sudo gem install ffi 。

  2. 然后arch -x86_64 pod install再次运行并构建。

并且工作得很好。


Nit*_*tin 5

Cocoapods 现在存在问题,因为Xcode 14.3现在在框架的符号链接中使用相对路径。

要么等待 Cocoapods 版本 1.12.1 的发布,要么在Pods-APPNAME-frameworks.sh文件中进行以下简单更改:

APPNAME是您的应用程序名称

您需要搜索并替换:

  if [ -L "${source}" ]; then
    echo "Symlinked..."
    source="$(readlink "${source}")"
  fi
Run Code Online (Sandbox Code Playgroud)

  if [ -L "${source}" ]; then
    echo "Symlinked..."
    source="$(readlink -f "${source}")"
  fi
Run Code Online (Sandbox Code Playgroud)

请注意,添加了-f 。

在此输入图像描述

在此输入图像描述


归档时间:

查看次数:

11073 次

最近记录:

6 年 前