Проблема с диспетчером пакетов Swift с идентификаторами пакетов

Я почти уверен, что SPM может решить эту проблему, но мне трудно ее найти. Я совершенно уверен, что «я ошибаюсь».

Я новичок в SPM и все еще борюсь с его синтаксисом и методологией.

Может быть, все, что должно произойти, - это чтобы кто-то направил меня к соответствующей документации PackageDescription (которую я не могу найти).

Я нахожусь в процессе переключения приложения, которое я разработал, на использование SPM для некоторых библиотеки, которые я тоже написал. Он использовал Carthage, и библиотеки были добавлены как простые исходные файлы (все они являются зависимостями с одним исходным файлом).

Все работает отлично ... за исключением того, что я получаю отказ от загрузки в App Store.

Ему не нравятся идентификаторы пакетов для встроенных библиотек. В названии проекта есть символы подчеркивания, и я должен заменить их дефисами.

Эти библиотеки (эта, этот и этот) не являются действительно разработан, чтобы поставляться в виде библиотек. Это действительно файлы с одним исходным кодом. Похоже, SPM встраивает их в библиотеку, но на самом деле я не предоставляю Info.plist для сборки.

Может ли кто-нибудь дать мне какое-либо руководство о том, как я могу контролировать идентификаторы пакетов, оставляя имена модулей такими же?

Для записи, вот ошибки, которые я получаю:  Загрузить журнал ошибок


person Chris Marshall    schedule 19.06.2020    source источник
comment
Думаю, я нашел нужные документы: docs.swift.org/package-manager /PackageDescription/index.html   -  person Chris Marshall    schedule 20.06.2020
comment
Если я решу это, я отправлю свой ответ здесь.   -  person Chris Marshall    schedule 20.06.2020
comment
Довольно интересно, что кто-то рекомендует закрыть этот вопрос из-за того, что в основном «не подходит для SO», когда есть довольно много вопросов и ответов SPM по SO. Я считаю, что это ОЧЕНЬ актуально для разработчиков Swift. SPM не новость, но на самом деле он только недавно был интегрирован в Xcode, поэтому подобные проблемы будут довольно частыми.   -  person Chris Marshall    schedule 20.06.2020
comment
А именно: stackoverflow.com/search?q=Swift+package+manager   -  person Chris Marshall    schedule 20.06.2020


Ответы (1)


OK. Я понял.

Во-первых, документация по 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.

Кроме того, есть проблема с плохим кешем. Мне пришлось удалить ВСЕ, чтобы убедиться, что загружена нужная версия.

person Chris Marshall    schedule 19.06.2020