集成Flutter至已有原生iOS应用:真机无法启动(模拟器正常)
解决Objective-C项目集成Flutter后真机启动崩溃问题
针对你遇到的真机启动时dyld[788]: Library not loaded: @rpath/Flutter.framework/Flutter报错,以下是几个必查的配置修复点:
1. 检查Flutter.framework的嵌入配置
- 打开Xcode项目,进入Targets -> 主App Target -> General -> Frameworks, Libraries, and Embedded Content,找到
Flutter.framework,把它的Embed选项设为Embed & Sign(模拟器运行可能不需要,但真机必须开启嵌入才能把框架打包进App)。 - 如果列表里没有
Flutter.framework,点击+按钮,从你的Flutter项目ios/Flutter目录下添加进来,再设置Embed属性。
2. 验证Build Settings路径配置
- 进入Targets -> 主App Target -> Build Settings,搜索
Framework Search Paths,确认包含Flutter.framework的正确路径,比如$(SRCROOT)/Flutter(根据你的项目实际目录调整,确保是有效相对路径)。 - 搜索
Runpath Search Paths,确保里面有@executable_path/Frameworks,这是系统查找内嵌框架的关键路径。
3. 检查Flutter集成脚本
- 如果你用CocoaPods集成Flutter模块,确认Podfile里正确配置了Flutter依赖,并且执行过
pod install。示例配置:flutter_application_path = '../flutter_module' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'My App Name' do install_all_flutter_pods(flutter_application_path) end - 手动集成的话,确认Targets -> 主App Target -> Build Phases -> Run Script里包含Flutter构建脚本,并且脚本顺序在
Compile Sources之后、Embed Frameworks之前:"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
4. 清理缓存后重新构建
- 执行
flutter clean清理Flutter项目缓存,再在Xcode里选Product -> Clean Build Folder(快捷键Cmd+Shift+K)。 - 删除真机上的旧应用,重新编译运行。
5. 确认架构适配
- 在Build Settings -> Architectures中,设置为
Standard Architectures (arm64, armv7),避免因架构不匹配导致框架无法加载。
内容的提问来源于stack exchange,提问作者codemonkey
相关产品推荐
相关产品推荐

