Flutter集成photo_manager后出现dyld符号缺失错误求助
Flutter引入photo_manager后出现dyld符号找不到错误(OBJC_CLASS$_NSObject)
问题描述
开发Flutter应用时,引入photo_manager: ^3.5.1前一切正常,之后运行iOS端出现以下错误:
dyld[23097]: Symbol not found: _OBJC_CLASS_$_NSObject Referenced from: <4DE91EDC-8360-3D98-8708-1A59E6D3BF68> /private/var/containers/Bundle/Application/7D9F2969-506C-490B-89D3-5455EEE99CB5/Runner.app/Runner Expected in: <54054A7D-80D5-3095-8B3D-2B33EFEF74D4> /private/var/containers/Bundle/Application/7D9F2969-506C-490B-89D3-5455EEE99CB5/Runner.app/Frameworks/photo_manager.framework/photo_manager
已尝试的方案:
- 更换photo_manager版本
- 执行
flutter clean、pod install/pod update等清理刷新操作 - 在Xcode的Library搜索路径中添加
${inherited}标签 - 统一项目和Target的Deployment target版本(13.0、14.0)
当前环境:
- Dart:
>=3.3.0 <4.0.0 - Flutter:
>=3.19.2
可能的解决方法
1. 检查Xcode框架链接设置
打开iOS项目(ios/Runner.xcworkspace),进入Target > Runner > Build Phases > Link Binary With Libraries:
- 确认
photo_manager.framework的状态为Required(若为Optional则修改) - 若未添加该框架,点击
+搜索添加项目Pods中的对应版本
2. 修改Podfile强制静态链接
在ios/Podfile中添加以下配置,确保photo_manager以静态库形式编译:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) if target.name == 'photo_manager' target.build_configurations.each do |config| config.build_settings['OTHER_LDFLAGS'] = '-ObjC' config.build_settings['MACH_O_TYPE'] = 'staticlib' end end end end
修改后依次执行:
flutter clean cd ios && pod install
3. 配置Xcode的Other Linker Flags
进入Target > Runner > Build Settings > Linking > Other Linker Flags,添加:
-ObjC-all_load(或-force_load $(PROJECT_DIR)/Pods/photo_manager/ios/photo_manager.framework/photo_manager,路径按需调整)
4. 验证Framework搜索路径
确认Target > Runner > Build Settings > Search Paths > Framework Search Paths包含:
$(inherited)$(PROJECT_DIR)/Pods/photo_manager/ios(根据实际Pods路径调整)
5. 尝试使用最新修复分支
若上述方法无效,直接从GitHub拉取项目最新分支:
photo_manager: git: url: https://github.com/fluttercandies/flutter_photo_manager.git ref: main
内容的提问来源于stack exchange,提问作者Angelina Gromova
相关产品推荐
相关产品推荐

