Xcode+Swift4+Mac M1:持续出现随机编译错误求助
解决Swift 3升级到Swift 4后M1设备上AWS SDK相关编译随机错误
锁定AWS SDK的兼容版本
Swift 4升级后,旧版AWS SDK可能和M1架构、Swift 4语法不兼容,直接在Podfile里指定支持Swift 4且适配arm64的过渡版本:pod 'AWSCore', '~> 2.10.0' pod 'AWSS3', '~> 2.10.0' # 其他AWS组件都按这个版本号指定,2.10.x系列是官方明确适配Swift 4和arm64的版本执行
pod deintegrate && pod install彻底清理并重装依赖。调整Podfile的架构与Swift版本配置
在Podfile末尾添加这段脚本,避免M1上的架构冲突,同时强制AWS组件用Swift 4编译:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' config.build_settings['SWIFT_VERSION'] = '4.0' end end end执行
pod install应用配置。修复项目级Swift兼容性设置
打开Xcode项目,进入Target的Build Settings:- 把
Swift Language Version设为Swift 4.0(别选4.2,避免语法兼容坑) - 勾选
Enable Modules (C and Objective-C) - 在
Other Linker Flags里添加-ObjC(AWS SDK靠这个加载混编符号)
- 把
彻底清理缓存
除了Cmd+Shift+K清Build Folder,手动删缓存目录更彻底:rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf Pods/ rm -rf YourProject.xcworkspace之后重新
pod install,打开xcworkspace编译。检查混编桥接文件
要是项目有Objective-C和Swift混编的桥接文件,确保AWS SDK的头文件都正确导入:#import <AWSCore/AWSCore.h> #import <AWSS3/AWSS3.h>同时确认桥接文件路径在Target的Build Settings ->
Objective-C Bridging Header里设置正确。
内容的提问来源于stack exchange,提问作者Diego Perez
相关产品推荐
相关产品推荐

