iOS模拟器构建Flutter项目报错:ld: framework not found Flutter
解决Flutter iOS构建报错:ld: framework not found Flutter
我之前遇到过完全一样的问题,这大概率是Flutter框架的引用路径配置出错,或者项目的iOS构建缓存有冲突导致的。下面是几个亲测有效的解决步骤,建议按顺序尝试:
步骤1:彻底清理项目构建缓存
先把项目里的旧构建残留全部清掉,避免干扰新的构建流程:
- 在项目根目录执行以下命令:
flutter clean rm -rf ios/Pods rm ios/Podfile.lock rm -rf ios/Runner.xcworkspace - 然后重新获取依赖并尝试构建:
flutter pub get cd ios && pod install cd .. && flutter build ios
步骤2:检查Xcode中Flutter.framework的搜索路径
Xcode找不到框架经常是因为路径配置不对,按这个步骤检查:
- 打开iOS项目的
Runner.xcworkspace - 选中
Runnertarget,切换到Build Settings标签页 - 搜索
Framework Search Paths,确保包含以下路径(路径可根据你的项目实际位置调整,要保证这些路径下确实存在Flutter.framework):$(inherited)$(PROJECT_DIR)/Flutter$(FLUTTER_ROOT)/bin/cache/artifacts/engine/ios
步骤3:验证Flutter.framework文件是否存在
有时候框架文件本身缺失也会导致这个问题:
- 检查项目的
ios/Flutter目录,确认里面有Flutter.framework - 如果没有,执行以下命令下载iOS所需的Flutter框架:
flutter precache --ios
步骤4:检查Podfile的配置正确性
确保你的ios/Podfile顶部有正确的Flutter引用配置,示例如下:
platform :ios, '9.0' # 替换成你的项目最低iOS支持版本 use_frameworks! flutter_application_path = '../' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'Runner' do use_frameworks! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end
修改后重新执行pod install。
步骤5:重置Xcode的DerivedData缓存
Xcode的DerivedData缓存也可能引发这类链接错误:
- 打开Xcode,点击顶部菜单
Xcode->Preferences->Locations - 点击
DerivedData旁边的箭头,打开对应的文件夹 - 删除当前项目对应的DerivedData文件夹,然后重启Xcode再尝试构建
附:你提供的报错信息参考
Xcode构建时的报错:
export IPHONEOS_DEPLOYMENT_TARGET=9.0 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang \ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk \ -L/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator \ -L/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator/Stripe \ -L/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator/shared_preferences \ -L/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Pods/Stripe/InternalFrameworks \ -L/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Flutter \ -F/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator \ -F/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Pods/../.symlinks/flutter/ios \ -F/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Flutter \ -filelist /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList \ -Xlinker -rpath -Xlinker @executable_path/Frameworks \ -mios-simulator-version-min=9.0 -dead_strip -Xlinker -object_path_lto \ -Xlinker /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_lto.o \ -Xlinker -export_dynamic -Xlinker -no_deduplicate \ -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc \ -fobjc-link-runtime -ObjC -lStripe -lStripe3DS2 -lshared_preferences \ -framework Contacts -framework CoreLocation -framework Flutter \ -framework Foundation -framework PassKit -framework Security \ -framework WebKit -ObjC -lStripe -lStripe3DS2 -lshared_preferences \ -framework Contacts -framework CoreLocation -framework Flutter \ -framework Foundation -framework PassKit -framework Security \ -framework WebKit -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements \ -Xlinker /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent \ -framework App -framework Flutter -lPods-Runner -Xlinker -dependency_info \ -Xlinker /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_dependency_info.dat \ -o /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator/Runner.app/Runner ld: framework not found Flutter clang: error: linker command failed with exit code 1 (use -v to see invocation)
VSCode执行flutter build ios --debug --verbose的报错:
-framework Flutter -lPods-Runner -Xlinker -dependency_info \ -Xlinker /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphoneos/Runner.build/Objects-normal/arm64/Runner_dependency_info.dat \ -o /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphoneos/Runner.build/Objects-normal/arm64/Runner ld: framework not found Flutter clang: error: linker command failed with exit code 1 (use -v to see invocation) [+1864 ms] "flutter ios" took 46,343ms. [ ] "flutter ios" took 46,343ms. Encountered error while building for device. #0 throwToolExit (package:flutter_tools/src/base/common.dart:28:3) #1 BuildIOSCommand.runCommand (package:flutter_tools/src/commands/build_ios.dart:94:7) <asynchronous suspension> #2 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:478:18) <asynchronous suspension> #3 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:383:33) <asynchronous suspension> #4 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29) <asynchronous suspension> #5 _rootRun (dart:async/zone.dart:1124:13) #6 _CustomZone.run (dart:async/zone.dart:1021:19) #7 _runZoned (dart:async/zone.dart:1516:10) #8 runZoned (dart:async/zone.dart:1463:12) #9 AppContext.run (package:flutter_tools/src/base/context.dart:152:18) <asynchronous suspension> #10 FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:375:20) #11 CommandRunner.runCommand (package:args/command_runner.dart:197:27) <asynchronous suspension> #12 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:396:21) <asynchronous suspension> #13 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29) <asynchronous suspension> #14 _rootRun (dart:async/zone.dart:1124:13) #15 _CustomZone.run (dart:async/zone.dart:1021:19) #16 _runZoned (dart:async/zone.dart:1516:10) #17 runZoned (dart:async/zone.dart:1463:12) #18 AppContext.run (package:flutter_tools/src/base/context.dart:152:18) <asynchronous suspension> #19 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:356:19) <asynchronous suspension> #20 CommandRunner.run.<anonymous closure> (package:args/command_runner.dart:112:25) #21 new Future.sync (dart:async/future.dart:224:31) #22 CommandRunner.run (package:args/command_runner.dart:112:14) #23 FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:242:18) #24 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:22) <asynchronous suspension> #25 _rootRun (dart:async/zone.dart:1124:13) #26 _CustomZone.run (dart:async/zone.dart:1021:19) #27 _runZoned (dart:async/zone.dart:1516:10) #28 runZoned (dart:async/zone.dart:1500:12) #29 run.<anonymous closure> (package:flutter_tools/runner.dart:60:18) <asynchronous suspension> #30 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29) <asynchronous suspension> #31 _rootRun (dart:async/zone.dart:1124:13) #32 _CustomZone.run (dart:async/zone.dart:1021:19) #33 _runZoned (dart:async/zone.dart:1516:10) #34 runZoned (dart:async/zone.dart:1463:12) #35 AppContext.run (package:flutter_tools/src/base/context.dart:152:18) <asynchronous suspension> #36 runInContext (package:flutter_tools/src/context_runner.dart:56:24) <asynchronous suspension> #37 run (package:flutter_tools/runner.dart:51:10) #38 main (package:flutter_tools/executable.dart:62:9) <asynchronous suspension> #39 main (file:///Users/abhijeetnigoskar/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3) #40 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32) #41 RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
内容的提问来源于stack exchange,提问作者Jugal Jaiswal
相关产品推荐
相关产品推荐

