ios构建错误:在命令行上运行"flutter run"时产生多个命令。
ios构建错误:在命令行上运行"flutter run"时产生多个命令。
在mac上将Xcode升级到10.0版本后,Flutter iOS构建失败。
Xcode构建输出错误:
- 错误:多个命令生成'/Users/dev/Documents/projects/Personal/uaenumber/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
1) 'Runner'目标从'/Users/dev/Documents/projects/Personal/uaenumber/ios/Flutter/Flutter.framework'复制到'/Users/dev/Documents/projects/Personal/uaenumber/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'的复制命令
2) 该命令依赖于'Runner'目标中的命令:脚本阶段“[CP] Embed Pods Frameworks”
- 警告:在Swift 4模式下使用Swift 3 @objc推断已弃用。请处理已弃用的@objc推断警告,使用“启用已弃用的Swift 3 @objcinference日志记录”功能测试代码,然后通过将“Runner”目标的“Swift 3 @objc推断”构建设置更改为“默认”来禁用推断。
- 警告:忽略重复的输出文件:'/Users/nagendra/Documents/projects/Personal/uaedialer/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'(在目标“Runner”中)
- 使用新的构建系统
- 计划构建
- 构建描述构建应用程序失败,无法在模拟器上启动iPhone X。
我尝试重新创建项目并将所有源文件复制到新的项目文件夹中,但问题仍未解决。
Xcode版本-10.0(10A255)
iOS构建错误:多个命令在"flutter run"命令行中产生的问题已经被确认是一个已知问题。以下是问题的解释和一些解决方法:
受影响的项目:
这个问题影响使用Xcode 10构建的所有依赖于CocoaPods的Flutter项目,通常这意味着那些依赖于插件的项目。
解决方法:
有两个解决方法可供选择:
选项1:使用传统的构建系统。打开ios/Runner.xcworkspace,将构建系统更改为传统的构建系统。
选项2:使用新的Xcode 10构建系统。
- 打开ios/Runner.xcworkspace。
- 在项目导航栏中选择Runner项目。
- 在主视图中,选择Runner目标,然后选择Build Phases选项卡。
- 展开Embed Frameworks阶段,并从嵌入的框架列表中选择Flutter.framework。
- 点击减号将Flutter.framework从列表中删除(确保保留App.framework)。
根本原因:
当使用插件时,有两个竞争的构建操作将Flutter.framework复制到构建应用程序的Frameworks目录中:
1. Runner项目的Embed Frameworks构建阶段。
2. pod install在项目中创建的[CP] Embed Pods Frameworks构建阶段。
第一项是为了确保在没有插件(因此在Xcode项目中没有CocoaPods集成)的情况下,将框架复制到构建的应用程序中。第二项是因为Flutter的podspec将Flutter.framework声明为vended_framework,并且CocoaPods会自动为每个这样的vended_framework在CocoaPods依赖的传递闭包中添加一个复制步骤。
如果你已经尝试了各种方法却仍然无法成功构建存档文件,那么你的问题可能和我的情况一样。我花了3个工作日来解决这个问题。我的问题是在向项目中添加通知服务目标后出现的。但是它似乎也适用于其他许多情况:
问题是由于两个目标中的库产生了多个命令。在我的情况下,例如,在项目目标和通知扩展目标中,都有GoogleUtilities
这个库,导致它们产生冲突或重复的命令。解决方法是在顶层明确该依赖关系。
Pod文件将如下所示:
platform :ios, '10.0' use_frameworks! inhibit_all_warnings! pod 'GoogleUtilities' // 添加这一行非常重要。 target 'MyProject' do pod 'Firebase/Analytics' pod 'Firebase/Crashlytics' pod 'Firebase/Messaging' # 其他pod end target 'NotificationService' do pod 'Firebase/Messaging' end
运行以下命令:
pod deintegrate pod install
非常感谢!
谢谢你,你是最棒的!
从上述内容中可以看出,问题的原因是在执行"flutter run"命令时,出现了"Multiple commands produce on "flutter run" from command line"的错误。根据给出的解决方法,可以得出以下结论:原因是Flutter.framework被重复引用,造成了冲突。解决方法是在Xcode中移除重复引用的Flutter.framework。
具体的解决步骤如下:
1. 打开ios/Runner.xcworkspace文件,选择项目导航侧边栏中的Runner项目。
2. 在主视图中,选择Runner目标,然后选择Build Phases选项卡。
3. 展开Embed Frameworks阶段,并从嵌入的框架列表中选择Flutter.framework。
4. 点击减号按钮,将Flutter.framework从列表中移除(确保保留App.framework)。
如果在上述步骤中无法找到Flutter.framework,可以尝试使用命令"rm -Rf ios/Flutter/Flutter.framework"来删除该文件。
总结起来,解决这个问题的关键是在Xcode中移除重复引用的Flutter.framework。通过执行上述步骤,可以解决"Multiple commands produce on "flutter run" from command line"错误。