在XCODE升级后,使用多个命令抖动iOS构建失败错误

Nag*_*nti 6 cross-platform build ios flutter

升级到mac中的Xcode 10.0版本后,Flutter iOS构建失败.

Nagendras-MacBook-Pro:uaenumber nagendra$ flutter run
Launching lib/main.dart on iPhone X in debug mode...
Starting Xcode build...
Xcode build done.                                            1.4s
Failed to build iOS app
Error output from Xcode build:
?
    ** BUILD FAILED **

Xcode's output:
?
    error: Multiple commands produce '/Users/dev/Documents/projects/Personal/uaenumber/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
    1) Target 'Runner' has copy command from '/Users/dev/Documents/projects/Personal/uaenumber/ios/Flutter/Flutter.framework' to '/Users/dev/Documents/projects/Personal/uaenumber/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
    2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
    warning: The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objcinference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "Runner" target. (in target 'Runner')
    warning: ignoring duplicated output file: '/Users/nagendra/Documents/projects/Personal/uaedialer/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework' (in target 'Runner')
    note: Using new build systemnote: Planning buildnote: Constructing build description
Could not build the application for the simulator.
Error launching application on iPhone X.
Run Code Online (Sandbox Code Playgroud)

Xcode版本 - 10.0(10A255)

我尝试重新创建项目并将所有源文件复制到新项目文件夹,但它没有解决问题.有谁有想法吗?

Doa*_*Bui 18

如果你已经尝试了一切,但仍然无法成功构建存档,那么你看起来就像我的情况。

我花了 3 个工作日才解决这个问题。我的问题是在将Notification Services目标添加到项目后发生的。但看起来它也适用于许多其他情况:

该问题是由库内2个目标多个命令产生的。例如,在我的例子中,在项目目标和通知扩展目标中,两者都GoogleUtilities存在导致它们冲突或重复生成命令的情况。解决方案是在顶层明确这种依赖关系。pod 文件将如下所示:

platform :ios, '10.0'
use_frameworks!
inhibit_all_warnings!

pod 'GoogleUtilities' // Add this line is very important.

target 'MyProject' do
  pod 'Firebase/Analytics'
  pod 'Firebase/Crashlytics'
  pod 'Firebase/Messaging'
# Other pods
end

target 'NotificationService' do
  pod 'Firebase/Messaging'
end
Run Code Online (Sandbox Code Playgroud)

运行后:

pod deintegrate
pod install 
Run Code Online (Sandbox Code Playgroud)


tud*_*dan 13

这是一个众所周知的问题.以下是解释和一些解决方法:https: //github.com/flutter/flutter/issues/20685#issuecomment-421511890


Nag*_*nti 10

这个解决方案对我有用.

  1. 打开ios/Runner.xcworkspace在项目导航器侧栏中选择Runner项目.
  2. 在主视图中,选择Runner目标,然后选择Build Phases选项卡.
  3. 展开Embed Frameworks阶段并从嵌入式框架列表中选择Flutter.framework.
  4. 单击 - 从列表中删除Flutter.framework(确保保留App.framework).

  • 我在 Runner 目标的嵌入框架阶段看不到 FLutter.framework。我也看不到目录 ios/Flutter/Flutter.framework 中的文件。 (5认同)

Usm*_*man 5

此问题已通过在 Xcode 10 中打开 Runner 工作区项目得到修复。然后导航至文件、工作区设置并将构建系统更改为旧版构建系统。 在此处输入图片说明


Jen*_*enn 5

编辑: Flutter 的最新稳定版本会将您的 Xcode 项目迁移到新的构建系统(下面的第一步)并完全避免多个嵌入式框架警告。如果没有,请按照https://flutter.dev/docs/development/ios-project-migration 中的说明进行操作。您不再需要编辑 Podfile(下面的第二步)。

https://github.com/flutter/flutter/issues/20685#issuecomment-622126064

上一个答案

  1. 在 Xcode 中打开 ios/Runner.xcworkspace。文件 > 工作区设置... > 构建系统,将下拉菜单更改为新建构建系统(默认)
  2. 在您的 Podfile 中,添加行
install! 'cocoapods', :disable_input_output_paths => true
Run Code Online (Sandbox Code Playgroud)

3. 在你的 Flutter 应用程序中,再次构建以触发一个pod install,它会自动清理构建阶段

flutter build ios
Run Code Online (Sandbox Code Playgroud)

参见:https : //github.com/flutter/flutter/issues/20685#issuecomment-509731873 https://github.com/flutter/flutter/issues/20685#issuecomment-510162863

警告:不要按照其他答案中的建议恢复到 Xcode 弃用的旧版构建系统来解决此问题。