Swift 包管理器:依赖项 iOS 版本
Swift Package Manager: dependency iOS version
我正在尝试使用 xCode11 beta 7 构建具有外部依赖性 (CoreStore) 的 swift 包。我的包针对 iOS11+,已声明在 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: "Storages",
platforms: [.iOS(.v11)],
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "Storages",
targets: ["Storages"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
.package(url: "https://github.com/JohnEstropia/CoreStore.git", from: "6.3.0")
],
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: "Storages",
dependencies: [.product(name: "CoreStore")]),
.testTarget(
name: "StoragesTests",
dependencies: ["Storages"]),
]
)
然而,当我构建它时,依赖构建没有指定 iOS 版本,所以我得到兼容性错误:
"'uniquenessConstraints' is only available in iOS 9.0 or newer"
等等。
我该如何解决?看起来是 xCode11 错误,但我不确定。
我不确定它是否是 xCode 错误,但是使用 Swift 包管理器和 xCode 11 你必须在使用时明确指定 iOS 版本#available
检查。不管图书馆是否针对 iOS 10+,而不是
if #available(macOS 10.11, *) {
info.append(("uniquenessConstraints", self.uniquenessConstraints))
}
你应该使用
if #available(macOS 10.11, iOS 9.0, *) {
info.append(("uniquenessConstraints", self.uniquenessConstraints))
}
首先需要添加一个platform
参数,填写支持的平台版本。然后,您需要在主机应用程序中 clear derived data
。之后,再次尝试添加 spm 框架。
我有同样的事情,一开始我没有添加平台参数,它给了我很多“'xxx' is only available in iOS 9.0 or newer”错误主机应用程序。希望这能为您解决问题。
在我的机器上,将 platforms:
参数添加到清单中解决了这个问题。例如:
let package = Package(
name: "MyLibrary",
platforms: [.iOS("13.0")],
// ...
我正在尝试使用 xCode11 beta 7 构建具有外部依赖性 (CoreStore) 的 swift 包。我的包针对 iOS11+,已声明在 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: "Storages",
platforms: [.iOS(.v11)],
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "Storages",
targets: ["Storages"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
.package(url: "https://github.com/JohnEstropia/CoreStore.git", from: "6.3.0")
],
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: "Storages",
dependencies: [.product(name: "CoreStore")]),
.testTarget(
name: "StoragesTests",
dependencies: ["Storages"]),
]
)
然而,当我构建它时,依赖构建没有指定 iOS 版本,所以我得到兼容性错误:
"'uniquenessConstraints' is only available in iOS 9.0 or newer"
等等。
我该如何解决?看起来是 xCode11 错误,但我不确定。
我不确定它是否是 xCode 错误,但是使用 Swift 包管理器和 xCode 11 你必须在使用时明确指定 iOS 版本#available
检查。不管图书馆是否针对 iOS 10+,而不是
if #available(macOS 10.11, *) {
info.append(("uniquenessConstraints", self.uniquenessConstraints))
}
你应该使用
if #available(macOS 10.11, iOS 9.0, *) {
info.append(("uniquenessConstraints", self.uniquenessConstraints))
}
首先需要添加一个platform
参数,填写支持的平台版本。然后,您需要在主机应用程序中 clear derived data
。之后,再次尝试添加 spm 框架。
我有同样的事情,一开始我没有添加平台参数,它给了我很多“'xxx' is only available in iOS 9.0 or newer”错误主机应用程序。希望这能为您解决问题。
在我的机器上,将 platforms:
参数添加到清单中解决了这个问题。例如:
let package = Package(
name: "MyLibrary",
platforms: [.iOS("13.0")],
// ...