iOS构建在App Store Connect遭拒,关联tdLib与ITMS-90429错误
解决ITMS-90429错误:libswift_Concurrency.dylib位置异常(Flutter + TDLib场景)
一、针对ITMS-90429错误的修复方案
- 锁定Xcode稳定版:必须使用Apple官方GM(Golden Master)版本的Xcode,beta版本会导致Swift依赖库的打包逻辑异常,建议升级到当前最新的正式版。
- 修改TDLib编译参数:
编译TDLib时强制禁用Swift Concurrency依赖,避免隐式引入的库路径问题。在cmake编译命令中添加-DTD_ENABLE_SWIFT_CONCURRENCY=OFF参数:
重新编译生成cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake -DPLATFORM=OS64 -DTD_ENABLE_SWIFT_CONCURRENCY=OFF -DTD_ENABLE_DSYM=ON ..libtdjson.xcframework后替换原有文件。 - 检查Embed Frameworks配置:
打开Xcode的Runner target → Build Phases → Embed Frameworks:- 如果
libswift_Concurrency.dylib已在列表中,确认其Embed选项为Embed & Sign; - 如果该库不在列表,从Xcode DerivedData目录(路径类似
~/Library/Developer/Xcode/DerivedData/Runner-xxx/Build/Products/Release-iphoneos)找到libswift_Concurrency.dylib,拖入Embed Frameworks列表并设置为Embed & Sign。
- 如果
- 清理缓存重新构建:
执行以下命令彻底清理项目缓存,避免旧依赖干扰:
之后用Xcode重新归档并上传。flutter clean rm -rf ios/Pods ios/Podfile.lock cd ios && pod install
二、TDLib在Flutter iOS项目中的标准集成步骤
- 编译TDLib为XCFramework:
git clone https://github.com/tdlib/td.git cd td mkdir build-ios && cd build-ios # 编译禁用Swift Concurrency的arm64版本,同时生成dSYM符号文件 cmake -G Xcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake -DPLATFORM=OS64 -DTD_ENABLE_SWIFT_CONCURRENCY=OFF -DTD_ENABLE_DSYM=ON .. xcodebuild -configuration Release -target tdjson # 手动打包为XCFramework(如果自动生成失败) xcodebuild -create-xcframework -library build-ios/Release-iphoneos/libtdjson.dylib -headers ../include -output libtdjson.xcframework - 项目集成配置:
- 将编译好的
libtdjson.xcframework拖入iOS项目的Frameworks目录,勾选Copy items if needed; - 在Runner target的
Frameworks, Libraries, and Embedded Content中,将libtdjson.xcframework的Embed状态设置为Embed & Sign; - 创建Swift-C++桥接文件(如
TDLibBridge.h),添加TDLib头文件引用:#import <tdjson/tdjson.h> - 在
AppDelegate.swift中实现Flutter方法通道逻辑时,避免使用未兼容的Swift Concurrency语法(如async/await),除非确认Xcode能正确处理依赖打包。
- 将编译好的
- 归档上传验证:
- 完成归档后,右键归档包→
Show in Finder→右键→Show Package Contents,进入Products/Applications/Runner.app/Frameworks,确认libtdjson.dylib和libswift_Concurrency.dylib(如果需要)都存在于该目录; - 使用Xcode的
Distribute App功能上传时,确保在App Thinning步骤中未排除必要的框架文件。
- 完成归档后,右键归档包→
内容的提问来源于stack exchange,提问作者Yash Vardhan
相关产品推荐
相关产品推荐

