2016-09-28 3 views
14

Nachdem ich ein neues Swift-Paket mit Abhängigkeiten erstellt habe, rufe ich swift package generate-xcodeproj. Wenn meine Abhängigkeiten eine neue Version haben, rufe ich swift package update. Die neue Version meiner Abhängigkeit wird heruntergeladen und erstellt, aber Xcode hat jetzt einen schlechten Verweis auf die alte Version der Abhängigkeit. Ich kann wieder swift package generate-xcodeproj aufrufen, aber das wird alle benutzerdefinierten Ziele entfernen, die ich eingerichtet habe.So aktualisieren Sie Swift-Abhängigkeiten in Xcode

Wie aktualisiere ich meine schnellen Abhängigkeiten und mein Xcode-Projekt, ohne meine benutzerdefinierten Ziele zu löschen?

+1

Ich habe die gleiche Frage. Das Erzeugen einer neuen Kopie des '.xcodeproj 'entfernt auch jede Ordnerstruktur, die zum Organisieren von Quelldateien verwendet wurde. –

+1

Ich habe ein Tool gebaut, um damit zu helfen. https://github.com/saltzmanjoelh/XcodeHelperCli Nachdem Sie es erstellt haben und kopieren Sie es nach/usr/local/bin oder wo immer Sie 'xchelper update-packages -s' nennen können. Dies wird Ihre Pakete aktualisieren und Symlinks für Ihr Xcode-Projekt erstellen. Auf diese Weise müssen Sie, wenn Ihre Pakete neue Versionen erhalten, die Verweise nicht manuell aktualisieren. – joels

Antwort

8

Anstatt zu versuchen, Ihre Änderungen am generierten Projekt beizubehalten, können Sie Abhängigkeiten in einem separaten Projekt verwalten, wie CocoaPods.

Beim Starten neues Projekt:

  1. Xcode erstellen Projekt für Ihre Anwendung MyApp.xcodeproj
  2. speichern als Arbeitsbereich MyApp.xcworkspace
  3. Paket mkdir MyDeps && cd MyDeps swift package init --type library
  4. hinzufügen Abhängigkeiten Package.swift
  5. für Ihre Abhängigkeiten erstellen Generiere Xcode-Projekt für das Abhängigkeiten-Paket swift package generate-xcodeproj
  6. add erzeugt Projekt MyDeps.xcodeproj zu Ihrem Arbeitsbereich MyApp.xcworkspace
  7. add Ziel MyDeps.framework zu Linked Frameworks Ihrer App MyApp.xcodeproj

Mit diesem Setup Sie frei Abhängigkeiten in Package.swift und regenerieren abhängig Projekt aktualisieren können je nach Bedarf .

+0

Ich mag das - solide Abhilfe. –