什么是伞头?有什么用?我收到了一个警告,如下所示.这是什么意思?
<module-includes>:1:1: warning: umbrella header for module 'XCTest' does not include header 'XCTextCase+AsynchronousTesting.h' [-Wincomplete-umbrella]
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/Headers/XCTest.h"
Run Code Online (Sandbox Code Playgroud) 在 Xcode 中,我可以选择我的目的地作为“通用 iOS 设备”或任何 iOS 模拟器,我的包将为 ios 构建特定于平台的代码。
通过命令行“swift build”只为 macOS 构建我的目标。
我想为 CI 目的构建 iOS 目标。为 macOS 构建的问题在于不会构建 UIKit 特定的代码。
例如:
#if canImport(UIKit)
// some invalid code
#endif
Run Code Online (Sandbox Code Playgroud)
无效代码不会被注意到,并且会通过构建阶段。
理想情况下,我可以说类似swift build -platform iOS. 有没有办法做这样的事情?
我最近创建了我的第一个 Swift 包。它目前仅在 iOS 中使用,如果它用于其他任何地方,它可能会在 tvOS 上,但就是这样。
我在使用 UIKit 时遇到了麻烦。我在这里看到了这篇笔记,这确实帮助解决了我的问题:https : //stackoverflow.com/a/58684636/1435520
我使用的(上面提到的)命令是这样的:
swift build -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios13.0-simulator"
Run Code Online (Sandbox Code Playgroud)
但是,我真的很想进行单元测试。swift test...使用为 提到的相同参数运行swift build。但这给了我一个新的错误:
error: module 'XCTest' was created for incompatible target x86_64-apple-macos10.14
所以,我想我只是想知道是否有可能做到这一点。就像,我怎么能创建一个使用 UIKit 的 Swift 包,并让它可测试?