You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SPM的iOS App导出本地化失败:找不到UIKit模块

解决Xcode导出本地化时SPM包因macOS编译报错的问题

问题原因

Export Localizations功能执行时,会默认尝试为项目中所有启用的平台编译代码——哪怕你的SPM包已经指定了仅支持iOS/iPadOS,Xcode还是会触发macOS平台的编译检查,导致依赖UIKit的代码报错。

解决方案

1. 给UIKit相关代码加条件编译

这是最直接的修复方式,确保UIKit的导入和代码只在iOS/iPadOS下编译:

  • 单个文件内的UIKit依赖:
    #if canImport(UIKit)
    import UIKit
    
    extension UIImage {
        // 你的扩展代码
    }
    #endif
    
  • 如果整个文件都是UIKit专用,直接在文件顶部加平台判断:
    #if os(iOS) || os(iPadOS)
    import UIKit
    
    // 整个文件的代码内容
    #endif
    

2. 导出本地化时指定目标平台

在导出本地化的对话框里,只选择需要的平台:

  • 打开「Product > Export Localizations」
  • 在弹出的窗口中,找到「Include」选项,取消勾选macOS目标,只保留iOS和iPadOS
  • 点击「Export」执行导出

3. 强化SPM包的平台限制

检查你的Package.swift,确保包和target都明确指定仅支持iOS/iPadOS:

let package = Package(
    name: "Helpers",
    platforms: [
        .iOS(.v16),
        .iPadOS(.v16)
    ],
    targets: [
        .target(
            name: "Helpers",
            platforms: [.iOS(.v16), .iPadOS(.v16)],
            resources: [.process("Resources")]
        )
    ]
)

4. 临时禁用macOS目标(极端情况)

如果以上方法都无效,可以临时关闭项目的macOS支持:

  • 选中主应用target,进入「General」标签的「Deployment Info」
  • 取消勾选「Mac」选项
  • 导出本地化完成后,再重新勾选恢复macOS支持

内容的提问来源于stack exchange,提问作者alpennec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:16:04