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:
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:
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]
)
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:
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:
L'autre option va créer des phases et répéter une manière similaire dans Link Binary With Libraries:
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.
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.