美文网首页
iOS解决集成flutter混合工程报错

iOS解决集成flutter混合工程报错

作者: 東玖零 | 来源:发表于2023-04-24 10:55 被阅读0次

官方文档操作,在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到手机上了~

相关文章

网友评论

      本文标题:iOS解决集成flutter混合工程报错

      本文链接:https://www.haomeiwen.com/subject/oddujdtx.html