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

iOS项目导出本地化构建遇macOS平台版本要求错误如何解决?

解决iOS项目中Swift包本地化触发macOS SDK构建的问题

我之前也碰到过这个坑——Swift Package Manager(SPM)在处理包内的本地化资源时,默认会自动给包开启全Apple平台支持,哪怕你原本只想做iOS专属的包。这就导致一启用本地化,构建流程就自动切换到macOS SDK,触发了那个“目标支持10.13”的错误,而你又没法给这个包添加macOS目标。

这里有几个经过验证的解决方法,你可以挨个试试:

1. 在Package.swift中明确指定仅支持iOS

这是最直接的解决方案,通过在包配置里硬指定支持的平台,覆盖SPM的默认多平台行为。修改你的Package.swift,添加或完善platforms配置:

let package = Package(
    name: "Entities",
    defaultLocalization: "en", // 你的默认本地化语言
    platforms: [
        .iOS(.v15) // 替换成你项目实际需要的最低iOS版本
    ],
    products: [
        .library(name: "Entities", targets: ["Entities"]),
    ],
    dependencies: [
        .package(url: "https://github.com/groue/GRDBQuery.git", from: "1.0.0")
    ],
    targets: [
        .target(
            name: "Entities",
            resources: [.process("Resources")], // 你的本地化资源目录
            dependencies: [.product(name: "GRDBQuery", package: "GRDBQuery")]
        ),
        .testTarget(
            name: "EntitiesTests",
            dependencies: ["Entities"]
        ),
    ]
)

重点是platforms数组里只保留iOS,这样SPM就不会自动添加macOS、watchOS等其他平台的支持,构建时会一直使用iOS SDK。

2. 手动修正包的Xcode构建设置

如果修改Package.swift后还是有问题,可以直接在Xcode里强制指定包的支持平台:

  • 在项目导航栏里找到你的Entities包(通常在Packages分组下)
  • 选中包的目标,进入Build Settings标签页
  • 搜索Supported Platforms,确保只勾选iOS,删除所有其他平台选项
  • 再搜索macOS Deployment Target,如果存在的话直接删除这个配置项

3. 清理Xcode缓存,避免旧配置干扰

有时候Xcode的缓存会残留旧的平台配置,导致修改不生效:

  • 关闭Xcode
  • 找到项目的DerivedData文件夹(可以通过Xcode的File > Project Settings查看路径,直接删除整个文件夹)
  • 重新打开项目,执行Product > Clean Build Folder(快捷键Cmd+Shift+K)
  • 再次尝试导出本地化字符串

4. 确认本地化资源结构合规

确保你的Resources目录下的本地化文件是标准格式:

  • 每个语言对应一个[语言代码].lproj文件夹,比如en.lproj、zh-Hans.lproj
  • 文件夹内放置Localizable.strings、InfoPlist.strings等标准本地化文件
    SPM对资源结构有严格要求,异常的结构可能会导致它错误推断平台支持。

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:30:37