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