Xcode错误:PhaseScriptExecution执行失败,退出码为非零值。

15
我已经创建了一个Flutter应用程序,现在想要创建一个用于在Xcode 14.3中分发的存档。
问题:
1. 存档被禁用。 2. 在构建失败时出现以下错误:PhaseScriptExecution failed with a nonzero exit code。
已尝试的方法:
1. Pod Install 2. 清理构建文件夹 3. 在终端应用程序中打开Xcode项目文件夹。 输入并执行以下命令:pod deintegrate 执行此命令:pod install 重新打开Xcode > 转到Product > 清理构建文件夹。 再次运行您的应用程序。
注意: 前往钥匙串访问。选择从登录选项中再次锁定和解锁的选项被禁用。如何启用它?
期待您的帮助。
屏幕截图: enter image description here Podfile
# Uncomment this line to define a global platform for your project
platform :ios, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end

你可以提供一下出错的截图吗?仅凭这个错误信息还无法解释原因。另外,请提供您的Xcode版本。 - Masroor
如果您正在使用Xcode 14.3,则这是您的解决方案。由于最新的Cocoapods更改,所有现有项目的归档都失败了。 - Masroor
我尝试了很多解决方案,但都没有起作用。 - undefined
7个回答

50

你应该在项目中搜索这个文件:

Pods-[你的项目名称]-frameworks.sh (…-frameworks.sh)

并编辑此部分:

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

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

source="$(readlink "${source}")" -----> source="$(readlink -f "${source}")"

解决方法是更新所有生成的...-frameworks.sh文件,将-f标志添加到对readlink的调用中。换句话说,将 source="$(readlink "${source}")" 替换为 source="$(readlink -f "${source}")"

enter image description here

这个链接可能会对你有所帮助: https://github.com/CocoaPods/CocoaPods/issues/11808


1
嗨,我在 framework.sh 类中尝试了这个。只有一个地方需要更改吗?因为我已经尝试并仅更改了一个位置的 readlink,但对我没用。 - Taimoor Sikander
我附上了一张图片作为答案,清理并重新归档。 - Maziar Saadatfar
@TaimoorSikander https://github.com/CocoaPods/CocoaPods/issues/11808 - Maziar Saadatfar
还有在日志中我找到了这个.. /bin/sh:/packages/flutter_tools/bin/xcode_backend.sh:没有那个文件或目录 - Taimoor Sikander
1
这对我有效。运行 pod update 后又恢复到了不好的方式,所以如果你更新你的 pods,请注意。 - Micro
显示剩余7条评论

25

根据建议

@Maziar Saadatfar

按照他在下面的步骤1中所述的指示进行操作,之后还有一件事情需要按照步骤2中所述进行。

  1. 您应该在项目中搜索此文件:

Pods-[your-project-name]-frameworks.sh (...-frameworks.sh)

并编辑此部分:

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

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

源代码="$(readlink "${source}")" -----> 源代码="$(readlink -f "${source}")"

解决方法是更新所有生成的...-frameworks.sh文件,将-f标志添加到对readlink的调用中。换句话说,将source="$(readlink "${source}")"替换为source="$(readlink -f "${source}")"

  1. 打开Xcode - 点击Runner(顶部) 从“PROJECT”中选择Runner,而不是从“TARGETS”中选择 选择配置 并将所有模式更新为此照片 enter image description here

你的问题解决了吗? - Maziar Saadatfar
2
我刚刚换成了M1芯片,但这对我没有用。我使用的是Xcode 14.3和Flutter 3.7.11以及Cocoapods 1.12.0。 - rashidotm
1
你刚刚救了我的一周!!谢谢! - Herman
对我来说,每个配置中都缺少的是“生成”设置。 - undefined

5
这对我有用: 在 L7 更新 node_modules/react-native/scripts/find-node.sh
- set -e - set +e

谢谢,它起作用了。 除了这个解决方案,其他的都不起作用。 我之前使用的是XCode 14.2和React-Native 0.64.2。 - undefined
这对我有用,但编辑node_modules感觉很危险。我应该修补这个包还是有其他方法? - undefined
更新:开发工作正常,但在尝试归档构建时失败。 - undefined

0
```html

在此代码中添加-f

source="$(readlink -f "${source}")"

文件位置 ios/Pods/Target Support Files/Pods-Runner

您可以像这样向项目文件添加-f

```
Note: This is the translated text in Chinese.

0
在我的情况下,ios/目录下的.xcode.env.local文件指向了错误(过时的)node安装路径。

export NODE_BINARY="/opt/homebrew/Cellar/node@18/18.13.0_1/bin/node"

将其更新为当前的node路径,就不再出现PhaseScriptExecution错误了。

0
你会在"ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh"文件中找到"Pods-[your-project-name]-frameworks.sh"这个文件。
然后打开这个文件并更新下面的一行代码:
source="$(readlink "${source}")"

source="$(readlink -f "${source}")"

0
确保您的项目路径中没有名称之间的空格。这就是导致我的问题的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接