升级Xcode 15.0.1后Flutter项目编译报错:找不到iconv.2.4.0库
报错信息
Launching lib/main_dev.dart on iPad de lucas (2) in debug mode...
main_dev.dart:1
Updating project for Xcode compatibility.
Upgrading project.pbxproj
Upgrading Runner.xcscheme
Automatically signing iOS for device deployment using specified development team in Xcode project: HLT4NS3S64
Xcode build done. 54,3s
Failed to build iOS app
Could not build the precompiled application for the device.
Error (Xcode): Library 'iconv.2.4.0' not found
Error (Xcode): Linker command failed with exit code 1 (use -v to see invocation)
Error launching application on iPad de lucas (2).
Exited (1)
解决步骤
定位依赖来源
在iOS依赖目录搜索旧版本iconv的引用,直接锁定问题库:grep -r "iconv.2.4.0" ios/Pods/同时查看
Podfile.lock文件,搜索iconv相关条目,确认具体是哪个第三方库在依赖旧版本。替换系统iconv引用
打开Xcode的Runner项目,进入Build Settings->Linking->Other Linker Flags,添加-liconv(不带版本号,直接引用系统默认的iconv库),同时移除任何明确指定libiconv.2.4.0.tbd或libiconv.2.4.0.dylib的配置项。彻底清理缓存后重建
执行以下命令清理所有缓存并重新安装依赖:flutter clean rm -rf ios/Pods ios/Podfile.lock cd ios && pod install && cd ..重启Xcode,按下
Cmd+Shift+K清理Xcode缓存后,再尝试编译项目。修复第三方库的硬编码依赖
如果排查到某个第三方库硬编码了iconv.2.4.0的引用:- 优先升级该库到最新版本(多数主流库已适配Xcode 15);
- 若无法升级,找到该库的
.podspec文件,将其中的spec.libraries = 'iconv.2.4.0'修改为spec.libraries = 'iconv',然后重新执行pod install。
内容的提问来源于stack exchange,提问作者Lucas Barreto Luz

