M1 Mac安装Cocoapods时Mapbox相关模块编译报错该如何解决
M1芯片Mac安装Mapbox相关CocoaPods依赖报错解决方案
问题背景
使用2020款M1芯片MacBook Pro(系统版本Big Sur 11.6)克隆GitHub现有仓库,安装CocoaPods依赖时先后出现多轮Mapbox相关编译报错,以下是对应的解决步骤:
阶段1:Xcode 13环境下报错
报错内容:
No such module 'MapboxCommon_Private'- Failed to build module 'MapboxSearch'; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57)', while this compiler is 'Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1)'). Please select a toolchain which matches the SDK.
该类报错的核心原因是你所使用的MapboxSearch 1.x beta版本最高仅支持Xcode 12.5.1对应的Swift 5.4.2版本,和Xcode 13的Swift 5.5版本不兼容,降级Xcode到12.5.1的操作是正确的前置步骤。
阶段2:Xcode 12.5.1环境下报错
报错内容:
Failed to build module 'MapboxSearch' from its module interface; it may have been damaged or it may have triggered a bug in the Swift compiler when it was produced
该报错是由于Podfile配置冲突、Mapbox相关编译参数缺失导致,按以下步骤处理即可解决:
完整解决步骤
- 第一步:清理本地缓存
执行以下命令清除残留的旧版本Pod文件,避免缓存干扰:rm -rf ~/Library/Caches/CocoaPods rm -rf Pods rm -rf Podfile.lock pod deintegrate - 第二步:修正Podfile配置
你调整后的Podfile中ARCHS[sdk=iphonesimulator*] = \uname -m`和EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64`存在配置冲突,M1芯片+Xcode12.5.1环境下仅需保留排除arm64的配置即可,同时添加Mapbox专属编译参数,修正后的post_install段如下:
Mapbox相关依赖版本无需调整,保留post_install do |pi| pi.pods_project.targets.each do |t| t.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' # 删除原有ARCHS配置,仅保留模拟器排除arm64配置 config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" # 新增Mapbox专属编译参数,解决模块接口编译报错 if t.name.include? "Mapbox" config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'NO' config.build_settings['SKIP_INSTALL'] = 'NO' end end end endMapbox-iOS-SDK ~> 6.4.0、MapboxSearch >= 1.0.0-beta.6, < 2.0即可。 - 第三步:重新安装依赖
右键点击终端→显示简介→勾选「使用Rosetta打开」,重启终端后执行:pod install - 第四步:Xcode配置校验
打开生成的.xcworkspace文件,进入项目主配置的Build Settings页,确认两项配置:- Excluded Architectures下,Debug、Release模式的iOS Simulator选项都已添加
arm64 - Build Active Architecture Only下,Debug模式设为
Yes,Release模式设为No
完成以上操作后重新编译项目即可解决全部报错。
- Excluded Architectures下,Debug、Release模式的iOS Simulator选项都已添加
内容的提问来源于stack exchange,提问作者Tudor Neagu
相关产品推荐
相关产品推荐

