Swift 包管理器关于包 ID 的问题

Swift Package Manager Problem With Bundle IDs

我很确定 SPM 有能力解决这个问题,但我很难找到它。我很确定 "I'm not holding it right."

我对 SPM 还很陌生,仍在为它的语法和方法苦苦挣扎。

也许所有需要发生的事情就是让某人指导我找到适当的 PackageDescription 文档(我似乎找不到)。

我正在切换 an app I developed 以将 SPM 用于我也编写的一些库。它一直在使用迦太基,并且将库添加为简单的源文件(它们都是单源文件依赖项)。

一切正常...除了 App Store 上传被拒绝。

它不喜欢嵌入式库的包 ID。他们在项目名称中有下划线,我应该用破折号替换它们。

这些库 (this one, this one, and this one) 并非真正设计为作为库交付。它们实际上是单一源文件。看起来 SPM 将它们构建到一个库中,但我并没有真正为构建提供 Info.plist。

任何人都可以指导我如何控制包 ID,同时保持模块名称相同吗?

作为记录,这里是我得到的错误:

好的。我想通了。

首先,SPM 的文档...还有一些不足之处。我必须通过反复试验(错误很多)才能找到答案。

在 Package.swift 文件中,我有这个(对于我的一个依赖项):

// swift-tools-version:5.2

import PackageDescription

let package = Package(
    name: "RVS_Generic_Swift_Toolbox",
    products: [
        .library(
            name: "RVS_Generic_Swift_Toolbox",
            type: .dynamic,
            targets: ["RVS_Generic_Swift_Toolbox"]),
    ],
    targets: [
        .target(
            name: "RVS_Generic_Swift_Toolbox",
            path: "./src")
    ]
)

显然,SPM 使用 .library.name 属性 作为 BundleID。如果我改变它,像这样:

// swift-tools-version:5.2

import PackageDescription

let package = Package(
    name: "RVS_Generic_Swift_Toolbox",
    products: [
        .library(
            name: "RVS-Generic-Swift-Toolbox",
            type: .dynamic,
            targets: ["RVS_Generic_Swift_Toolbox"]),
    ],
    targets: [
        .target(
            name: "RVS_Generic_Swift_Toolbox",
            path: "./src")
    ]
)

然后,它允许上传,我仍然可以做 import RVS_Generic_Swift_Toolbox

此外,还有一个糟糕的缓存问题。我不得不删除所有内容以确保加载了正确的版本。