Jak zaktualizować tylko jedną bibliotekę z Cartfile za pomocą Carthage?

87

Mój plik Cartfile ma wiele bibliotek. Kiedy to robię carthage update, przechodzi przez wszystkie biblioteki. To może zająć bardzo dużo czasu.

Czy istnieje sposób, aby zaktualizować tylko jedną bibliotekę za pomocą kartaginy? Coś takiego? (to nie zadziała)

carthage update "evgenyneu/moa"
Evgenii
źródło

Odpowiedzi:

150

Od 0,12 wersji build , checkouti updatewziąć opcjonalną przestrzeń listę zależności rozdzielone

Dla Cartfile, takiego jak poniżej

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

Możesz zaktualizować jedną zależność

carthage update Alamofire

lub wiele zależności

carthage update Alamofire RxSwift

Jeśli chcesz dodać flagi, dodaj je na końcu:

carthage update Alamofire --platform iOS
Alex Salom
źródło
24
Carthage Update Box - no-use-binaries --platform iOS // jeśli potrzebujesz określić dodatkowe flagi
nalexn
@Alex Salom: Box to nazwa repozytorium w pliku koszyka? byłby łatwiejszy do zrozumienia, gdybyś użył czegoś bardziej znajomego, takiego jak AlamoFire? A co to jest część wynikowa? Inna nazwa repozytorium lub?
eonista
1
@GitSyncApp, tak, musisz wpisać nazwy zależności oddzielone spacjami. Zredagowałem odpowiedź
Alex Salom,
@ MartinRomañuk co dokładnie nie działa? Właśnie wypróbowałem powyższy przykład carthage bootstrapi przetworzyłem tylko jedną zależność z dwóch zdefiniowanych w pliku Cartfile. Spójrz na zrzut ekranu z mojego terminala pasteboard.co/I9bARyq.png
Alex Salom
@AlexSalom, aby być uczciwym, używasz, bootstrappodczas gdy odpowiedź mówi do użycia update. Gdy bootstrappobierasz cokolwiek Carfile.resolvedmówi, to się nie zaktualizuje.
Lluis Gerard,
13

Carthage obsługuje teraz aktualizację pojedynczych zależności.Jeśli masz coś takiego w swoim pliku koszyka:

github "bitstadium/HockeySDK-iOS"

Następnie możesz zaktualizować tylko tę jedną zależność, uruchamiając

carthage update HockeySDK-iOS
user978510
źródło
9

W tej chwili odpowiedź brzmi: nie ... Jeśli biegniesz carthage help update, zobaczysz

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

Jak widać, nie ma wzmianki o opcji określenia tylko jednej zależności do aktualizacji.

Powinieneś otworzyć problem w repozytorium projektu, prosząc o wsparcie.

mokagio
źródło
9

Jeśli platforma nie jest przechowywana w GitHub lub używasz git identyfikatora, a Twój cartfilewygląd wygląda następująco:

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

wtedy możesz zaktualizować tylko tę, która uruchamia następującą komendę

carthage update repo-name
SeanRobinson159
źródło
6

Wypróbowałem wszystkie odpowiedzi, a dla mnie tylko tymczasowe usuwanie lub komentowanie repozytoriów i po uruchomieniu

carthage update --platform ios

po przywróceniu Catfile do poprzedniego stanu

Ronaldo Albertini
źródło
0

Szybki 5

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

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

jeśli napotkasz taki błąd

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

Następnie ponownie użyj części 1 w Terminalu

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

i ponownie

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Shakeel Ahmed
źródło
0

[przepływ aktualizacji kartaginy]

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

Najdłuższa faza to buildkrok [xcodebuild], ponieważ:

  1. fat binaryjest zbudowany przy użyciu lipo[About]
  2. Carthage buduje cały shared frameworks schemesprojekt. Jeśli wiesz, jakiego dokładnie schematu potrzebujesz, możesz:

    • Pozostaw określone schematy w xcschemesfolderze.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Otwórz zbudowany projekt z Carthage/Checkoutsfolderu -> Zarządzaj schematami ... -> zostaw określone schematy

yoAlex5
źródło
0

Wygląda na to, carthage update repo-nameże nie działa Carthage 0.36.0. Rozwiązałem ten problem ręcznie aktualizując Carthage.resolved. Na przykład dodaj do Cartfilenowej zależności:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Dodaj Cartfile.resolvedręcznie do nowej zależności:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

Następnie wykonaj carthage bootstrapaktualizację tylko jednej zależności:

carthage bootstrap

Użyje Carthage.resolvedi po prostu doda jedną zależność.

Denis Kutlubaev
źródło