在 Xcode 11 中通过 Fastlane 构建 SPM 包不起作用
Posted
技术标签:
【中文标题】在 Xcode 11 中通过 Fastlane 构建 SPM 包不起作用【英文标题】:Build SPM Package via Fastlane in Xcode 11 does not work 【发布时间】:2019-10-04 09:27:57 【问题描述】:我最近将包管理器从 Cocoapods 更新为 SPM,因为 Xcode 11 已经集成了它。我所有的库都已经支持 SPM,所以我试了一下。在 Xcode 调试构建期间一切正常,但我目前正在使用 Fastlane 来自动化部署和测试过程,并且我的 spm 包在测试步骤中失败,因为我的包不支持 MacO,但一些依赖项支持,所以它不知何故试图强迫我提供 MacOS 支持。不幸的是,我目前不能这样做。
您是否知道我是否错误地使用了 spm,或者这是 spm 的错误? RxSwift 也支持 MacOs,但 spm 似乎对这个特定的包没有问题,只有 Kingfisher、RxSwiftExt 和 Willow 受到影响。
这是错误:
error: the product 'Kingfisher' requires minimum platform version 10.12 for macos platform
error: the product 'RxSwiftExt' requires minimum platform version 10.11 for macos platform
error: the product 'Willow' requires minimum platform version 10.11 for macos platform
这是我来自 fastlane/swift 的测试语句
swift test --build-path ./build --package-path Core --configuration debug
这是我的 Package.swift
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "Core",
platforms: [
.ios(.v11)
],
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "Core",
type: .static,
targets: ["Core"]),
],
dependencies: [
// Local Dependencies
.package(path: "../RxKingfisher"),
// Remote Dependencies
.package(url: "https://github.com/Nike-Inc/Willow.git", Package.Dependency.Requirement.branch("master")),
.package(url: "https://github.com/ReactiveX/RxSwift", .branch("master")),
.package(url: "https://github.com/Quick/Nimble", .branch("master")),
.package(url: "https://github.com/Quick/Quick", .branch("master")),
.package(url: "https://github.com/realm/realm-cocoa", .branch("master")),
.package(url: "https://github.com/RxSwiftCommunity/RxRealm", .branch("master")),
.package(url: "https://github.com/RxSwiftCommunity/Action", .branch("master")),
.package(url: "https://github.com/RxSwiftCommunity/RxSwiftExt", .branch("master")),
.package(url: "https://github.com/onevcat/Kingfisher", .branch("master")),
.package(url: "https://github.com/Swinject/Swinject", .branch("master")),
.package(url: "https://github.com/RxSwiftCommunity/RxDataSources", .branch("master")),
// We need to change to the master branch after it was merged
.package(url: "https://github.com/jrendel/SwiftKeychainWrapper", Package.Dependency.Requirement.revision("8b0da97503be8db3b008581a30fdec71046136a7"))
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "Core",
dependencies: [
// Remote
"Realm", "RealmSwift", "RxDataSources", "RxRealm", "Kingfisher", "RxSwift", "Action", "SwiftKeychainWrapper", "RxSwiftExt", "Swinject", "Willow",
// Locals
"RxKingfisher"
]),
.testTarget(
name: "CoreTests",
dependencies: ["Core", "Quick", "Nimble", "RxTest", "RxBlocking"])
]
)
【问题讨论】:
我也有同样的问题,有什么帮助吗? 【参考方案1】:不确定swift
命令的语法,但xcodebuild
设置目标对我有帮助。
xcodebuild -quiet clean test -project YourProject.xcodeproj -scheme YourScheme -destination 'platform=iOS Simulator,name=iPhone 8'
似乎在 Package.swift 中为 platforms
设置 iOS,您仍然可以将 Mac 作为可用的构建目标,它位于列表的开头并最终在这种情况下使用。
【讨论】:
以上是关于在 Xcode 11 中通过 Fastlane 构建 SPM 包不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Fastlane:我怎样才能“increment_build_number”只有一个目标?