Wie aktualisiere ich nur eine Bibliothek aus der Cartfile mit Karthago?

86

Meine Cartfile hat viele Bibliotheken. Wenn ich das mache carthage update, geht es durch alle Bibliotheken. Das kann sehr lange dauern.

Gibt es eine Möglichkeit, nur eine einzige Bibliothek mit Karthago zu aktualisieren? Etwas wie das? (das wird nicht funktionieren)

carthage update "evgenyneu/moa"
Evgenii
quelle

Antworten:

150

Von 0.12 Version build , checkoutund updatenehmen Sie eine optionale Raum Liste der Abhängigkeiten getrennt

Für eine Cartfile wie die folgende

github "Alamofire/Alamofire"
github "ReactiveX/RxSwift"

Sie können eine Abhängigkeit aktualisieren

carthage update Alamofire

oder mehrere Abhängigkeiten

carthage update Alamofire RxSwift

Wenn Sie Flags hinzufügen müssen, fügen Sie diese zuletzt hinzu:

carthage update Alamofire --platform iOS
Alex Salom
quelle
24
Karthago Update Box --no-use-binaries - Plattform iOS // wenn Sie zusätzliche Flags angeben müssen
Nalexn
@ Alex Salom: Box ist der Name des Repos in der Cartfile? Wäre es einfacher zu verstehen, wenn Sie etwas Bekannteres wie AlamoFire verwenden würden? Und was ist der Ergebnisanteil? Ein anderer Reponame oder?
Eonist
1
@GitSyncApp, ja, Sie müssen die Namen der Abhängigkeiten durch Leerzeichen getrennt schreiben. Ich habe meine Antwort bearbeitet
Alex Salom
@ MartinRomañuk was genau funktioniert nicht? Ich habe gerade das obige Beispiel mit ausprobiert carthage bootstrapund es hat nur eine Abhängigkeit von den beiden in der Cartfile definierten verarbeitet. Werfen
Alex Salom
@AlexSalom um fair zu sein, verwenden Sie, bootstrapwährend die Antwort sagt, zu verwenden update. Wenn bootstrapSie herunterladen, was auch immer Carfile.resolvedgesagt wird, wird es nicht aktualisiert.
Lluis Gerard
13

Karthago unterstützt jetzt das Aktualisieren einzelner Abhängigkeiten. Wenn Sie so etwas in Ihrer Cartfile haben:

github "bitstadium/HockeySDK-iOS"

Dann können Sie nur diese eine Abhängigkeit aktualisieren, indem Sie ausführen

carthage update HockeySDK-iOS
user978510
quelle
9

Im Moment lautet die Antwort nein ... Wenn Sie laufen, werden carthage help updateSie sehen

Update and rebuild the project's dependencies

[--configuration Release]
    the Xcode configuration to build (ignored if --no-build option is present)

[--platform all]
    the platform to build for (ignored if --no-build option is present)

[--verbose]
    print xcodebuild output inline (ignored if --no-build option is present)

[--no-build]
    skip the building of dependencies after updating

[--use-ssh]
    use SSH for downloading GitHub repositories

[--use-submodules]
    add dependencies as Git submodules

[--no-use-binaries]
    check out dependency repositories even when prebuilt frameworks exist (ignored if --no-build option is present)

[--color auto]
    whether to apply color and terminal formatting (one of ‘auto’, ‘always’, or ‘never’)

[/path/to/your/app]
    the directory containing the Carthage project

Wie Sie sehen, wird eine Option nicht erwähnt, mit der nur eine zu aktualisierende Abhängigkeit angegeben werden soll.

Sie sollten ein Problem im Projekt-Repo öffnen und darum bitten, dies zu unterstützen.

Mokagio
quelle
9

Wenn das Framework nicht in GitHub gespeichert ist oder Sie den gitBezeichner verwenden und Sie folgendermaßen cartfileaussehen:

git "ssh://[email protected]/teamname/repo-name.git" ~> 1.0

Dann können Sie nur den aktualisieren, der den folgenden Befehl ausführt

carthage update repo-name
SeanRobinson159
quelle
6

Ich habe alle Antworten ausprobiert und für mich nur vorübergehend die Repositorys entfernt oder kommentiert und nach dem Ausführen

carthage update --platform ios

nachdem ich das Catfile auf den vorherigen Zustand zurückgesetzt habe

Ronaldo Albertini
quelle
5

Am Ende habe ich mein eigenes Skript geschrieben, das eine einzelne Abhängigkeit für mich erstellt und mit meinen vorhandenen Abhängigkeiten zusammenführt. Sie finden es unter https://github.com/ruipfcosta/carthage-workarounds .

Rui
quelle
0

Swift 5

//MARK:- Step 1
carthage update KeychainAccess --platform iOS

carthage update SDKNAME(like i mention KeychainAccess upper) --platform iOS

wenn Sie auf einen solchen Fehler stoßen

//MARK:- If this error occur
error: unable to find utility "xcodebuild", not a developer tool or in PATH

Verwenden Sie dann Teil 1 erneut im Terminal

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

und wieder

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Shakeel Ahmed
quelle
0

[Karthago Update Flow]

carthage [update|bootstrap|checkout|build] [dependency1] [dependency2] [--no-use-binaries] [--platform <name>]

//--no-use-binaries - does not use prebuild binary and use source code
//--platform - specify a platform

Die längste Phase ist ein buildSchritt [xcodebuild], weil:

  1. fat binarywird mit lipo[About] erstellt
  2. Karthago baut ein ganzes shared frameworks schemesProjekt auf. Wenn Sie genau wissen, welches Schema Sie benötigen, können Sie:

    • Belassen Sie bestimmte Schemata im xcschemesOrdner.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Öffnen Sie das erstellte Projekt aus dem Carthage/CheckoutsOrdner -> Schemata verwalten ... -> lassen Sie bestimmte Schemata

yoAlex5
quelle
0

Sieht so aus, als würde carthage update repo-namees nicht funktionieren Carthage 0.36.0. Ich habe dieses Problem durch manuelles Aktualisieren gelöst Carthage.resolved. Fügen Sie beispielsweise Cartfileeine neue Abhängigkeit hinzu:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Cartfile.resolvedManuell zu einer neuen Abhängigkeit hinzufügen:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

carthage bootstrapAktualisieren Sie dann nur eine Abhängigkeit:

carthage bootstrap

Es wird Carthage.resolvednur eine Abhängigkeit verwendet und hinzugefügt.

Denis Kutlubaev
quelle