按官方文档操作,在podfile文件中添加了两行,pod install成功下载flutter到工程中,一点开始运行就报错。
左侧警告栏报错如下:
Command PhaseScriptExecution failed with a nonzero exit code
有可能是我的电脑比较老旧,半天都打不开详细日志,只能看到这句报错。
在AppDelegate显示报错如下:
No such module 'Flutter'
于是各种搜索和尝试,都无济于事。把xcode退出重新打开,各种折腾,终于让我看到了详细原因:
/Users/adong/Documents/workspace/ios/Demo-ios/DerivedData/Demo/Build/Intermediates.noindex/Demo.build/Debug-iphoneos/Demo.build/Script-C8EB956ACB8A17B0DFEA9D0A.sh: line 4: /Users/adong/Documents/workspace/ios/Demo-ios/Demo/../demo_flutter/.ios/Flutter/flutter_export_environment.sh: No such file or directory
报错的层级如下:
some/path/
├── demo_flutter/
├─── └── .ios/
├─────└── Flutter/
├───────└── podhelper.rb
└── Demo/
├─── └── Podfile
├─── └── Demo
├─────└── Demo.xcodeproj
Podfile文件中指定了MyApp.xcodeproj的路径:
project 'Demo/Demo.xcodeproj'
加载flutter文件如下:
flutter_application_path = '../demo_flutter'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
反而是指定工程这句指定坑了我几个小时:
1、对于pod来讲,它认定的Podfile的设定,上一个层级就可以找到demo_flutter。
2、对于xcode打开了Demo.xcodeproj来讲,上一个层级中根本就没有demo_flutter,它肯定是找不到这个文件的。
这是报错的真正原因。
于是我调整了我的程文件目录结构如下:
some/path/
├── demo_flutter/
├─── └── .ios/
├─────└── Flutter/
├───────└── podhelper.rb
└── Demo/
├─── └── Podfile
├─── └── Demo.xcodeproj
注意:Demo.xcodeproj和Podfile在同一级,在Podfile中,可以删除指定工程文件设定,因为他们就在同一级,不过我修改了一下这句,千万不要只移动这一个文件,以前和Demo.xcodeproj文件同级的所有内容全部要和Podfile放同一级。
project 'Demo.xcodeproj'
重新pod install,再打开Demo.xcworkspace,就可以正确识别到flutter了。
坑坑相连,修改了Demo.xcodeproj工程文件位置,导致编译失败,报错如下:
PhaseScriptExecution Embed\ Pods\ Frameworks /Users/adong/Documents/workspace/ios/demo-ios/DerivedData/Demo/Build/Intermediates.noindex/Demo.build/Debug-iphoneos/Demo.build/Script-BEE874E5056970139D6B1272.sh (in target 'Demo' from project 'Demo')
cd /Users/adong/Documents/workspace/ios/demo-ios
/bin/sh -c /Users/adong/Documents/workspace/ios/demo-ios/DerivedData/Demo/Build/Intermediates.noindex/Demo.build/Debug-iphoneos/Demo.build/Script-BEE874E5056970139D6B1272.sh
/Users/adong/Documents/workspace/ios/demo-ios/DerivedData/Demo/Build/Intermediates.noindex/Demo.build/Debug-iphoneos/Demo.build/Script-BEE874E5056970139D6B1272.sh: line 2: /Users/adong/Documents/workspace/ios/demo-ios/../Pods/Target Support Files/Pods-Demo/Pods-Demo-frameworks.sh: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code
各种找啊,最后在 TARGETS---->Demo--->Build phases--->Embed Pods Frameworks的脚本内删除“../”,正确结果截图如下:
image.png
这两个坑踩了一天,改完终于run到手机上了~
网友评论