Come aggiornare solo una libreria dal Cartfile con Carthage?


87

Il mio Cartfile ha molte librerie. Quando lo faccio carthage updatepassa attraverso tutte le librerie. Ciò può richiedere molto tempo.

C'è un modo per aggiornare solo una singola libreria con carthage? Qualcosa come questo? (questo non funzionerà)

carthage update "evgenyneu/moa"

Risposte:


150

Da 0,12 versione build , checkouteupdate prendere uno spazio opzionale elenco di dipendenze separate

Per un Cartfile come il seguente

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

Puoi scegliere di aggiornare una dipendenza

carthage update Alamofire

o più dipendenze

carthage update Alamofire RxSwift

Se devi aggiungere flag, aggiungili per ultimi:

carthage update Alamofire --platform iOS

24
Carthage update Box --no-use-binaries --platform iOS // se è necessario specificare flag aggiuntivi
nalexn

@Alex Salom: Box è il nome del repo nel Cartfile? sarebbe più facile capire se usassi qualcosa di più familiare come AlamoFire forse? E qual è la parte dei risultati? Un altro nome di repo o?
eonista

1
@ GitSyncApp, sì, devi scrivere i nomi delle dipendenze separati da spazi. Ho modificato la mia risposta
Alex Salom

@ MartinRomañuk cosa non funziona esattamente? Ho appena provato l'esempio sopra con carthage bootstrape ha elaborato solo una dipendenza dalle due definite nel Cartfile. Dai un'occhiata allo screenshot dal mio terminale pasteboard.co/I9bARyq.png
Alex Salom

@AlexSalom per essere onesti, stai usando bootstrapmentre la risposta dice di usare update. Se bootstrapstai scaricando qualunque cosa Carfile.resolveddica, non si aggiornerà.
Lluis Gerard

13

Carthage supporta l'aggiornamento delle singole dipendenze adesso. Se hai qualcosa di simile nel tuo Cartfile:

github "bitstadium/HockeySDK-iOS"

Quindi puoi aggiornare solo questa dipendenza eseguendo

carthage update HockeySDK-iOS

9

In questo momento la risposta è no ... Se corri carthage help updatevedrai

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

Come puoi vedere non viene menzionata un'opzione per specificare solo una dipendenza da aggiornare.

Dovresti aprire un problema nel repository del progetto chiedendo di supportarlo.


9

Se il framework non è archiviato in GitHub o stai utilizzando l' gitidentificatore e il tuo cartfileaspetto è simile a questo:

git "ssh://git@bitbucket.org/teamname/repo-name.git" ~> 1.0

quindi puoi aggiornare solo quello eseguendo il seguente comando

carthage update repo-name

6

Ho provato tutte le risposte e per me solo rimuovendo o commentando temporaneamente i repository e dopo l'esecuzione

carthage update --platform ios

dopo aver ripristinato il Catfile allo stato precedente



0

Swift 5

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

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

se affronti un errore come questo

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

Quindi usa di nuovo la parte 1 in Terminal

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

e di nuovo

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

0

[flusso di aggiornamento cartagine]

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

La fase più lunga è un buildpassaggio [xcodebuild] perché:

  1. fat binaryè costruito utilizzando lipo[Informazioni]
  2. Cartagine costruisce tutto shared frameworks schemesun progetto. Se sai esattamente quale schema ti serve puoi:

    • Lascia schemi specifici nella xcschemescartella.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Apri il progetto costruito dalla Carthage/Checkoutscartella -> Gestisci schemi ... -> lascia schemi specifici


0

Sembra carthage update repo-nameche non funzioni Carthage 0.36.0. Ho risolto questo problema aggiornando manualmente Carthage.resolved. Ad esempio, aggiungi a Cartfileuna nuova dipendenza:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Aggiungere Cartfile.resolvedmanualmente a una nuova dipendenza:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

Quindi fare carthage bootstrapper aggiornare solo una dipendenza:

carthage bootstrap

Userà Carthage.resolvede aggiungerà solo una dipendenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.