每当我通过 Xcode 中的 Swift 包管理器添加新包时,总会发生此错误:
无法获取库
我已经在 Xcode 中配置了 GitHub Auth Token 设置并注册了我的 GitHub 帐户。
我的 macOS 版本是 Monterey 12.1,我的 Xcode 版本是 13.1,我的命令行工具是 13.1,我使用的是 M1 芯片组 Mac。

在我的 M1 mac 上,使用 Xcode 13.3,我\xc2\xa0 创建了一个包并显示了代码覆盖率栏(编辑器菜单 \xe2\x80\x93> 代码覆盖率)。
\n运行测试后,源代码中根本没有代码覆盖率的指示。
\n测试包时如何获得代码覆盖率?
\n我\xe2\x80\x99m 尝试构建一个 Swift 包,该包包装了一个用 C: libndi_advanced_ios.a编写的胖静态库,来自NewTek\'s Apple Advanced NDI SDK。
\n我在将预编译库(只有头文件和 .a 二进制包可用)链接到我的 Swift 包时遇到问题。我做了很多研究并尝试了不同的解决方案,但没有一个有效。这是一个快速列表:
\n无法捆绑在 XCFramework 中,因为libndi_advanced_ios.a支持多个平台(arm_v7、i386、x86_64、arm64)并xcodebuild -create-xcframework返回错误( Swift 论坛binaries with multiple platforms are not supported上也讨论了此解决方案);
按照SPM 文档(已过时)的建议使用.linkedLibraryin会发出警告,并且我什至不记得它是否构建成功;targetssystem packages are deprecated; use system library targets instead
使用不同的标志和设置(如linkerSettings)并没有成功。也许我只是错过了正确的组合。
我可以链接数十个 Stackoverflow 的问题和其他没有帮助的帖子,但它们毫无用处(a、b、c)。
\n目前我有这样的配置: …
static-libraries ios swift swift-package-manager swift-package
在使用 Xcode 12/13 开发 swift 包时创建新文件时,有没有办法自动将包/目标名称和版权+公司名称添加到标头?
\n只需创建一个新包(文件 > 新建 > 包)并将新文件添加到源中(文件 > 新建 > 文件)。
\n目前给了我这个:
\n//\n// File.swift\n// \n//\n// Created by User Name on 02.10.21.\n//\nRun Code Online (Sandbox Code Playgroud)\n而不是这样(就像将文件添加到常规 Xcode 项目时一样):
\n//\n// File.swift\n// MyPackage\n//\n// Created by User Name on 02.10.21.\n// Copyright \xc2\xa9 2021 Company Name. All rights reserved.\n//\nRun Code Online (Sandbox Code Playgroud)\n谢谢!
\nPackage.swift到项目中时,我看不到项目中的任何本地包源文件。(见截图)我一直为此伤透了脑筋。对此的任何帮助将不胜感激。
13.2 (13C90)(从开发者门户下载,而不是AppStore)在常规的 Xcode 项目应用程序中,当我创建新文件时,它会提供一个模板(例如 SwiftUI/Swift/Storyboard)供我选择。我选择一个模板,单击“下一步”,提示将允许我输入文件名。之后,Xcode 会自动生成具有给定文件名、头文件名和结构名称(如果是 SwiftUI 文件)的文件。
然而,在 Swift 包管理器项目中,创建新文件并没有让我有机会输入文件名,而是创建一个带有占位符名称(如 file.swift)的默认 Swift 或 SwiftUI 文件。
这是已知问题或错误吗?为什么会有这种行为?有办法改变这个吗?
我正在创建一个 Swift 包,它本质上是从 Objective-C 框架生成的多个 XCFramework 的包装器,以便可以通过 SPM 安装它们。
就创建 SP 以及将其作为依赖项添加到应用程序的能力而言,一切工作正常。但是我在 SP 的存储库中包含了一堆非必要的文件,我不想将它们包含在实际的 SP 中 -即,当 SP 作为依赖项添加时,它们不应该显示在 Xcode 的导航器中。 (这些包括源 Obj-C 框架、自述文件、更改日志、用于演示应用程序的 Xcode 工作区、用于生成 XCFrameworks 的脚本文件等)。
这可能吗?或者 SPM 是否会始终检出整个存储库并使所有文件对用户可见?
我尝试过使用Target说明符的各种排列:source, path, exclude但无济于事。
这是我可以通过有效清单获得的最接近的结果,但是当我在虚拟 Xcode 应用程序中查看 SP 时,我仍然可以看到包含的存储库中的所有文件:
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "WrapperSwiftPackage",
platforms: [.iOS(.v13)],
products: [
.library(name: "WrapperSwiftPackage", targets: ["WrapperSwiftPackage"])
],
dependencies: [], …Run Code Online (Sandbox Code Playgroud) 我创建一个空白模板包:
\n> swift package init --name Temp\n> open Package.swift\nRun Code Online (Sandbox Code Playgroud)\nXcode 版本 13.2.1 (13C100) 打开该包。
\n我向包添加了依赖项。
\ndependencies: [\n .package(url: "https://github.com/johnsundell/publish.git", from: "0.7.0")\n],\nRun Code Online (Sandbox Code Playgroud)\n此时 Xcode > Product > Build 成功。
\n我编辑Temp/Sources/Temp/Temp.swift以插入在 中定义的包的第一行dependencies。
import Publish\nRun Code Online (Sandbox Code Playgroud)\n现在构建会生成以下错误:\xe2\x80\xa6/Temp/Sources/Temp/Temp.swift:1:8: error: no such module \'Publish\'。
我确信这是苹果的一个错误。或者我可能会错过一些东西。
\n当有xcodeproj和 提供的附加结构时,有几篇关于此问题的帖子。其中一些暗示了可以帮助某些人的解决方法。
有没有人看到过这个和/或知道如何解决它?
\nApple 的使用 Xcode 创建独立的 Swift 包文档没有提供任何见解。
\n我目前正在开发一个 Swift 包,我想在其中使用其他 Swift 包。为此,我将要使用的包添加到 Package.swift 中的依赖项中
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(url: "https://github.com/jedisct1/swift-sodium.git", .upToNextMajor(from: "0.9.1")),
.package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.5.0"))
],
Run Code Online (Sandbox Code Playgroud)
这是我的完整 Package.swift:
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(url: "https://github.com/jedisct1/swift-sodium.git", .upToNextMajor(from: "0.9.1")),
.package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.5.0"))
],
Run Code Online (Sandbox Code Playgroud)
然后,这些包将显示在项目导航器中的“包依赖项”下。但是当我尝试使用“import Alamofire”时,我收到一条错误消息“没有这样的模块‘Alamofire’”。如何在自己的包中正确使用这些包?
在执行“清理构建文件夹”后尝试构建时,我收到“没有此类模块”错误。反复尝试构建最终没有错误。
重要提示:找不到的模块是使用 Swift Package Manager 的本地包,即不是从 git 下载的。我像这样指定这些依赖项:
.package(url: "file:../CoreGraphicsExtensions", from: "0.0.0")
Run Code Online (Sandbox Code Playgroud)
/UIKitExtensions/Package.swift正如我在此处列出的文件中所见:
// swift-tools-version: 5.6
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "UIKitExtensions",
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
name: "UIKitExtensions",
targets: ["UIKitExtensions"]),
],
dependencies: [
// Dependencies declare other packages that this package depends …Run Code Online (Sandbox Code Playgroud)