Como atualizar apenas uma biblioteca do Cartfile com Carthage?

87

Meu Cartfile tem muitas bibliotecas. Quando eu faço carthage updateisso passa por todas as bibliotecas. Isso pode levar muito tempo.

Existe uma maneira de atualizar apenas uma única biblioteca com cartago? Algo assim? (isso não vai funcionar)

carthage update "evgenyneu/moa"
Evgenii
fonte

Respostas:

150

De 0,12 versão build , checkoute updatetomar um espaço opcional lista de dependências separadas

Para um Cartfile como o seguinte

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

Você pode escolher atualizar uma dependência

carthage update Alamofire

ou dependências múltiplas

carthage update Alamofire RxSwift

Se você precisar adicionar sinalizadores, adicione-os por último:

carthage update Alamofire --platform iOS
Alex Salom
fonte
24
Carthage update Box --no-use-binaries --platform iOS // se você precisar especificar sinalizadores adicionais
nalexn
@Alex Salom: Box é o nome do repo no Cartfile? seria mais fácil de entender se você usasse algo mais familiar como AlamoFire, talvez? E qual é a parte do Resultado? Outro nome de repo ou?
eonist
1
@GitSyncApp, sim, você tem que escrever os nomes das dependências separados por espaços. Editei minha resposta
Alex Salom
@ MartinRomañuk o que exatamente não funciona? Acabei de experimentar o exemplo acima com carthage bootstrape ele processou apenas uma dependência das duas definidas no Cartfile. Dê uma olhada na captura de tela do meu terminal pasteboard.co/I9bARyq.png
Alex Salom
@AlexSalom para ser justo, você está usando bootstrapenquanto a resposta diz para usar update. Se bootstrapvocê estiver baixando o que quer que Carfile.resolveddiga, ele não será atualizado.
Lluis Gerard
13

Carthage suporta a atualização de dependências únicas agora. Se você tiver algo assim em seu Cartfile:

github "bitstadium/HockeySDK-iOS"

Então você pode atualizar apenas esta dependência executando

carthage update HockeySDK-iOS
user978510
fonte
9

No momento, a resposta é não ... Se correr, carthage help updatevocê verá

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

Como você pode ver, não há menção à opção de especificar apenas uma dependência a ser atualizada.

Você deve abrir um problema no repositório do projeto pedindo suporte para isso.

mokagio
fonte
9

Se a estrutura não estiver armazenada no GitHub ou se você estiver usando o gitidentificador e for cartfilesemelhante a este:

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

então você pode atualizar apenas aquele executando o seguinte comando

carthage update repo-name
SeanRobinson159
fonte
6

Tentei todas as respostas, e para mim apenas removendo ou comentando temporariamente os repositórios e depois de executar

carthage update --platform ios

depois de restaurar o Catfile ao estado anterior

Ronaldo Albertini
fonte
0

Swift 5

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

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

se você enfrentar um erro como este

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

Em seguida, use a Parte 1 no Terminal Novamente

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

e de novo

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

[fluxo de atualização de cartago]

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

A fase mais longa é uma buildetapa [xcodebuild] porque:

  1. fat binaryé construído usando lipo[Sobre]
  2. Cartago constrói tudo shared frameworks schemesem um projeto. Se você souber exatamente de qual esquema precisa, você pode:

    • Deixe esquemas específicos na xcschemespasta.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Abra o projeto construído da Carthage/Checkoutspasta -> Gerenciar Esquemas ... -> deixe os esquemas específicos

yoAlex5
fonte
0

Parece carthage update repo-nameque não funciona Carthage 0.36.0. Resolvi esse problema atualizando manualmente Carthage.resolved. Por exemplo, adicione a Cartfileuma nova dependência:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Adicione a uma Cartfile.resolvednova dependência manualmente:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

Em seguida, faça carthage bootstrappara atualizar apenas uma dependência:

carthage bootstrap

Ele vai usar Carthage.resolvede apenas adicionar uma dependência.

Denis Kutlubaev
fonte