使用Swift Package Manager软件包对iOS应用程序进行Xcode导出本地化失败:无此类模块UIKit

irlmq6kh  于 2023-02-25  发布在  Swift
关注(0)|答案(1)|浏览(270)

我正在构建一个iOS应用程序(应用程序目标中支持的目标是iOS、iPad和Mac - Designed for iPad)。我有许多SPM框架,以便将我的代码库拆分为不同的功能。我想使用Xcode导出不同软件包和应用程序的本地化,但失败了。我遵循了有关SPM本地化的Apple指南:软件包包含一个Resources文件夹,其中包含支持的每种语言的文件夹。我在软件包中指定了平台.iOS(.v16)。但似乎使用Xcode中的Product > Export Localizations功能导出本地化也会编译macOS的软件包和应用程序。以下是错误消息:

Showing Recent Messages

/Users/axel/Developer/AppName/Packages/Helpers/Sources/Helpers/UIKit/UIImage+Extension.swift:7:14:
No such module 'UIKit'

/Users/axel/Developer/AppName/Packages/Helpers/Sources/Helpers/UIKit/UIImage+Extension.swift:7:14:
UIKit is not available when building for macOS. Consider using `#if canImport(UIKit)` to conditionally import this framework.

在使用为iOS指定的软件包构建iOS应用时,是否有办法让导出功能正常工作?

iyzzxitl

iyzzxitl1#

一位苹果框架工程师在苹果开发者论坛上回答说:
不幸的是,这是导出Swift包进行本地化的一个已知限制。通常,Swift包不能将代码限制到特定的平台包清单中的平台key用于设置最小部署目标,不声明是否支持某个平台。因此,您可能需要使用编译器指令对任何特定于iOS的API调用进行条件化,如错误所示:为macOS构建时UIKit不可用。请考虑使用#if canImport(UIKit)有条件地导入此框架

相关问题