Carthage安装Mastercard网关iOS SDK失败问题求助
使用Carthage解决Mastercard网关iOS SDK在Xcode 14.3+中的部署目标兼容问题
问题背景
使用Xcode 14.2及对应命令行工具时,执行carthage update --use-xcframeworks可成功构建Mastercard网关iOS SDK;但升级到Xcode 14.3及以上版本后,构建失败,报错:
The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 11.0 to 16.4.99. (in target 'MPGSDK-iOS' from project 'MPGSDK')
这是因为Xcode 14.3起不再支持iOS 8.0作为部署目标,而SDK默认配置的部署目标为8.0,导致构建冲突。以下是针对Carthage的解决方案:
解决方案1:通过命令行参数覆盖部署目标
直接在Carthage命令中传递xcodebuild参数,强制将SDK的部署目标设置为11.0(Xcode 14.3支持的最低版本)。执行以下命令:
carthage update --use-xcframeworks --xcodebuild-arguments "-destination", "platform=iOS,version=11.0", "-DCARTHAGE=1", "IPHONEOS_DEPLOYMENT_TARGET=11.0"
该命令通过IPHONEOS_DEPLOYMENT_TARGET=11.0参数覆盖SDK原有的部署目标配置,适配Xcode 14.3+的要求。
解决方案2:修改本地SDK项目后构建
如果命令行参数方式无效,可手动修改SDK的部署目标后从本地构建:
- 克隆Mastercard网关iOS SDK仓库到本地目录
- 打开仓库中的
MPGSDK.xcodeproj,找到MPGSDK-iOStarget,将iOS Deployment Target修改为11.0 - 修改项目根目录的
Cartfile,将原有的SDK依赖地址替换为本地路径,例如:file:///Users/yourname/Documents/gateway-ios-sdk - 执行
carthage update --use-xcframeworks完成构建
解决方案3:使用Carthage自定义构建脚本(进阶)
创建自定义构建脚本,在Carthage拉取SDK后自动修改部署目标,适合重复构建场景:
- 项目根目录创建
carthage-prebuild.sh脚本,内容如下:#!/bin/bash SDK_PATH="Carthage/Checkouts/gateway-ios-sdk/MPGSDK.xcodeproj" # 修改部署目标为11.0 /usr/libexec/PlistBuddy -c "Set :objects:MPGSDK-iOS:buildSettings:IPHONEOS_DEPLOYMENT_TARGET 11.0" "$SDK_PATH/project.pbxproj" - 赋予脚本执行权限:
chmod +x carthage-prebuild.sh - 执行Carthage命令时先运行脚本:
./carthage-prebuild.sh && carthage update --use-xcframeworks
内容的提问来源于stack exchange,提问作者Rana Ijaz
相关产品推荐
相关产品推荐

