Flutter iOS构建出现arm64架构amplify_auth_cognito相关符号未定义报错
Flutter iOS构建Amplify报错排查方案
报错说明
该报错为Swift编译产物的OC链接符号缺失问题,因Amplify SDK的auth_cognito模块使用Swift编写,旧项目配置异常时会出现该问题,全新项目默认配置兼容所以可以正常运行,可按以下步骤依次排查:
排查步骤
1. 全量清理构建缓存
- 在项目根目录执行命令:
flutter clean - 手动删除ios目录下的
Pods文件夹、Podfile.lock文件、Runner.xcworkspace文件 - 重新拉取依赖:执行
flutter pub get,之后进入ios目录执行pod install --repo-update
2. 修正Podfile基础配置
- 确认Podfile顶部的iOS最低版本配置为
platform :ios, '13.0',且注释已删除,Amplify SDK最低要求iOS 13版本 - 在Podfile末尾添加如下配置,统一所有Pod的编译参数:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' config.build_settings.delete 'EXCLUDED_ARCHS' end end end
3. 检查Xcode项目配置
- 用Xcode打开
ios/Runner.xcworkspace,进入Runner target的「Build Settings」页 - 搜索
Other Linker Flags,确认配置项中存在$(inherited),否则手动添加 - 搜索
Excluded Architectures,确认所有配置项中没有手动添加arm64架构排除规则 - 搜索
Always Embed Swift Standard Libraries,确认配置为YES
4. 校验依赖版本一致性
- 对比可正常运行的新项目的pubspec.yaml中所有amplify相关依赖的版本号,确保当前项目的版本完全对齐,不要跨大版本混用amplify_flutter、amplify_auth_cognito等组件
- 如果存在版本不一致,修正后重新执行
flutter pub get和pod install
5. 解决混编缺失问题
- 如果你的iOS项目之前是纯OC项目,没有任何Swift代码,可在ios/Runner目录下新建一个空的Swift文件,Xcode会自动创建Swift桥接文件,重新构建即可解决Swift类的OC链接问题
内容的提问来源于stack exchange,提问作者Amar Maharjan
相关产品推荐
相关产品推荐

