rsync错误:某些文件无法传输(代码23) Command PhaseScriptExecution执行失败,退出码非零

107

这里输入图片描述

我尝试将Flutter项目连接到我的iPhone上,但在添加Google AdMob后突然出现了这个错误。我已经尝试了钥匙串解决方案(Xcode 10.2.1 Command PhaseScriptExecution failed with a nonzero exit code)、pod deintegratepod cleanpod install等方法。我还尝试了多种项目配置,但都没有起作用。

Build target Runner
Project Runner | Configuration Debug | Destination Ryan's iPhone | SDK iOS 13.6`
Run custom shell script 'Thin Binary' 0.1 seconds`
building file list ... rsync: link_stat "/Volumes/\#341\#204\#213\#341\#205\#265\#341\#204\#207\#341\#205\#265\#341\#206\#253\#341\#204\#202\#341\#205\#241 01071958737/DEVELOPER/dont_forget/ios/../ios/Flutter/App.framework" failed: No such file or directory (2)
done

sent 29 bytes  received 20 bytes  98.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-54.120.1/rsync/main.c(996) [sender=2.6.9]
Command PhaseScriptExecution failed with a nonzero exit code

你找到任何解决方案了吗? - Rushabh Shah
我刚刚移除了Google AdMob的admob_flutter并尝试了另一个firebase_admob。也许是因为我在admob_flutter中设置了一些错误的东西。我不确定这是否是正确的答案,因为已经有一段时间了。但希望它能有所帮助。 - RyanIdea
9个回答

214
CocoaPods问题。前往:/ios/Pods/Target Support Files/Pods/Pods-AppName-frameworks.sh*-frameworks.sh文件中进行替换:
source="$(readlink "${source}")"

使用:

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

8
可以确认,在更新到 MacOS Ventura 13.3 和 Xcode 14.3 后,这个方法是可行的。谢谢! - MalokuS
22
以下是 Flutter 项目的确切路径:/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh - Chris
2
这个问题修复了错误,但是现在版本编号不遵循Runner Identify中的版本号。有没有办法解决这个问题,因为您不能使用相同的版本或构建编号上传新的构建? - Dennis Ashford
1
@DennisAshford 您可以在 XCode 中简单地更新版本号。 但是请注意:由于重置,您必须为每个“档案”添加“-f”。 - Chris
@Chris 起初那个方法不起作用,但是在我更新了 Xcode 的版本号之后,我没有使用 -f 标签重新构建了它,然后使用 -f 标签存档,这解决了我遇到的版本编号问题。 - Dennis Ashford
显示剩余9条评论

86

我尝试删除派生数据,但它没有起作用。(但如果有人能修复,这是最简单的方法。)

很明显,这是Xcode 14.3中cocoa-pods的问题,rsync错误。

解决方案:

  • 在Pods中搜索所选组并查找以下行。

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

  • 进入文件并将上述行替换为下面的行。

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

enter image description here

This is the file


3
嘿,老兄,非常感谢。我不想看起来像个新手,但你的回答是唯一一个让我知道如何找到这个要编辑的文件的答案。你救了我! - Dmytro Yashchenko
5
这对我有用。谢谢。 右键点击Pods,然后选择在所选组中查找... - anas.p
2
它有效。你怎么知道的? :) - Blazej Kita
1
工作得很棒。非常感谢你。 - ibrahim dao
1
我在工作区进行了“查找”搜索,立即找到了文件。一切都很顺利。 - SPM
显示剩余4条评论

47
现在Cocoapods存在一个问题,因为Xcode 14.3在其符号链接中使用了相对路径来引用框架。
要么等待Cocoapods版本1.12.1发布,要么在你的Pods-APPNAME-frameworks.sh文件中进行以下简单更改:
完整文件路径:/Pods/Target Support Files/Pods-APPNAME/Pods-APPNAME-frameworks.sh
APPNAME是你的应用程序名称。
你需要搜索并替换:
  if [ -L "${source}" ]; then
    echo "Symlinked..."
    source="$(readlink "${source}")"
  fi

使用

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

请注意,已添加-f

完整文件路径:/Pods/Target Support Files/Pods-APPNAME/Pods-APPNAME-frameworks.sh - ali ozkara
这个很有效,甚至连flutter都可以。 - Alfred Afutu

21

大家听好了。

这是由于新的XCode 14.3和Cocoapods需要更新引起的。现在已经有了更新,所以...

首先更新Cocoapods。

sudo gem install cocoapods

然后删除Pods文件夹

cd <projectdir>
rm -rf Pods

然后运行pod install

pod install

快乐的日子。


3
3年前发布的问题是如何由Xcode 14.3引起的? - HangarRash
4
已修复,使用CocoaPods更新至1.12.1版本。 - landonandrey
嗨,我正在使用 EAS 构建,所以当我创建 iOS 构建时,在“Run Fastlane”步骤期间,它会出现这个错误。由于这是在 EAS 构建上发生的问题而不是本地构建,我们该如何解决呢?在这种情况下,我们无法更新 cocoapods,对吧? - dev1ce
这应该是现在被接受的答案。 - Aleš Oskar Kocur
2
我已经安装了最新版本的CocoaPods(1.12.1),删除了pods文件夹并运行了pod install命令,但是问题仍然存在。 - user3673952
这个有效,谢谢!XCode的错误信息真是一点用都没有,哈哈 - JMK

7

删除派生数据对我有用。


3

错误发生是因为Cocoapods。您可以手动修复.sh脚本,但在执行“pod install”或其他操作后,它可能会被清除。

以下解决方案是临时的(很快新的Cocoapods版本将发布,问题应该会得到解决)。 谁想使用更新的Cocoapods(目前在主分支)- 链接;

从Cocoapods github问题页面中获取的解决方案是更改Podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    shell_script_path = "Pods/Target Support Files/#{target.name}/#{target.name}-frameworks.sh"
    if File::exists?(shell_script_path)
      shell_script_input_lines = File.readlines(shell_script_path)
      shell_script_output_lines = shell_script_input_lines.map { |line| line.sub("source=\"$(readlink \"${source}\")\"", "source=\"$(readlink -f \"${source}\")\"") }
      File.open(shell_script_path, 'w') do |f|
        shell_script_output_lines.each do |line|
          f.write line
        end
      end
    end
  end
end

这对我有用。我正在使用fastlane,而且我遇到了这个错误。 - Burak Çokyıldırım

3
最新版本的Cocoapods(撰写时为1.12.1)已提供修复。请运行以下命令,即可顺利进行。
sudo gem update cocoapods
pod install

0

此问题发生在Xcode 14.3上。解决方法就是将cocoapods更新至1.12.1。

您无需进行以下手动podfile更新。

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

一旦你重新执行 pod install,它会消失。

解决方案:https://github.com/CocoaPods/CocoaPods/releases


0
对于那些在 EAS Build 的 run fastlane 步骤中遇到此错误的人,我按照这个解决方案,并且只是在 eas.json 文件中将 cocoapods 更新到了 1.12.1。
使用的是 Expo 49.0.9 和 react-native 0.72.4。
    {
  "build": {
    "production": {
      "ios": {
        "distribution": "store",
        "cocoapods": "1.12.1"
      },
      "android": {
        "buildType": "app-bundle"
      },
      "channel": "production"
    },
    "preview": {
      "android": {
        "buildType": "apk"
      },
      "ios": {
        "distribution": "internal",
        "cocoapods": "1.12.1"
      },
      "channel": "preview"
    }
  },
  "cli": {
    "version": ">= 0.34.1",
    "requireCommit": true
  }
}

EAS构建 - rsync错误:某些文件无法传输(代码23)错误


目前您的回答表达不够清晰。请[编辑]以添加更多细节,帮助其他人理解您的回答如何解决所提出的问题。您可以在帮助中心找到更多有关如何撰写良好回答的信息。 - undefined

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