web-dev-qa-db-fra.com

Consommer Swift Package pour plusieurs cibles et plates-formes dans un projet?

J'ai un projet avec plusieurs cibles, comme une application iOS, une application watchOS et certains cadres. Comment puis-je attribuer le même package Swift à toutes mes cibles? Xcode ne me permet d'en sélectionner qu'un:

SPM1

Si j'essaie d'ajouter à nouveau le package Swift pour que je puisse essayer de l'attribuer à une autre cible dans mon projet, j'obtiens une erreur:

SPM2

Quelle est la bonne façon de procéder? Voici à quoi ressemble le manifeste du package dans le package Swift. Y a-t-il quelque chose à faire de ce côté ou quelque chose que je dois faire différemment dans Xcode?

import PackageDescription

let package = Package(
    name: "Alamofire",
    platforms: [
        .macOS(.v10_12),
        .iOS(.v10),
        .tvOS(.v10),
        .watchOS(.v3)
    ],
    products: [
        .library(
            name: "Alamofire",
            targets: ["Alamofire"])
    ],
    targets: [
        .target(
            name: "Alamofire",
            path: "Source")
    ],
    swiftLanguageVersions: [.v5]
)
16
TruMan1

J'ai eu le même problème, et je n'ai trouvé que ces deux solutions:

Tout d'abord, ajoutez le package à la première cible:

Add package

Ensuite, la première option va à l'autre cible, l'onglet Général, et dans Frameworks, Libraries and Embedded Content, appuyez sur +, sélectionnez le package et appuyez sur Ajouter:

Adding package in General tab

L'autre option va créer des phases et répéter une manière similaire dans Link Binary With Libraries:

Build Phases

Select package

Pour le moment, je ne connais que ces options, j'espère qu'à l'avenir Apple pourrait améliorer cela avec un contrôle multiple, par exemple.

18
Diego Carrera

Si vous ajoutez une nouvelle cible après avoir ajouté la dépendance, vous devrez supprimer la dépendance du projet, puis l'ajouter à nouveau. Sinon, la bibliothèque n'apparaîtra pas dans le sélecteur de framework.

Il est ennuyeux que la seule chose fiable que Xcode puisse faire avec Swift Package Manager est un crash pour moi. Assurez-vous donc d'avoir une sauvegarde du projet car il peut arriver à un état qui juste en l'ouvrant le fera planter Xcode.

0
grumblemo