TestFlight提示iOS转Mac版App仅支持macOS12而非11,原因何在?
以下是具体排查方向,按优先级逐一验证:
使用了iOS 15+/macOS 12+专属API
即便你的iOS部署目标是9.0,若代码中直接调用了仅iOS 15及以上(对应macOS 12及以上)才有的API且未做版本适配判断,就会触发兼容性警告。比如UIButton.Configuration、UINavigationBar.scrollEdgeAppearance这类iOS15新增的UIKit特性,在macOS11的Mac Catalyst环境中无法运行。
检查方式:开启XcodeBuild Settings里的Highlight API Usage,或通过Product > Analyze扫描代码,定位未适配低版本的API调用。第三方依赖库强制要求macOS 12+
你依赖的第三方SDK或库可能已将最低Mac Catalyst支持版本提升至12.0,即便应用自身目标版本更低,整体兼容性也会被拉高标准。比如部分更新后的统计、支付SDK可能不再兼容macOS11。
检查方式:查看CocoaPods的Podfile.lock或Swift Package Manager的依赖列表,确认每个依赖的最低Mac支持版本;或直接查阅第三方库官方文档。Info.plist中的配置冲突
Info.plist可能存在隐性版本要求:UIRequiredDeviceCapabilities中包含了macOS12才支持的硬件/系统特性(如特定GPU能力、新系统框架);LSMinimumSystemVersion被脚本、第三方工具间接设置为12.0。
检查方式:右键以源代码模式打开Info.plist,搜索LSMinimumSystemVersion和UIRequiredDeviceCapabilities相关条目,确认配置值。
Mac Catalyst专属代码使用了macOS12+特性
若通过#if targetEnvironment(macCatalyst)宏编写的Mac专属逻辑中,调用了macOS12才有的AppKit或Mac Catalyst API(如新窗口布局API、菜单配置),也会导致不兼容macOS11。
检查方式:全局搜索targetEnvironment(macCatalyst),查看块内API调用是否做了版本判断。Xcode项目配置错误
可能误将Mac Catalyst部署目标设为12.0:- 检查
Target > General > Deployment Info中的Mac Catalyst最低版本; - 查看
Build Settings里的MACOSX_DEPLOYMENT_TARGET值是否为12.0。
- 检查
内容的提问来源于stack exchange,提问作者marc hoffman

