Как обновить только одну библиотеку из Cartfile с помощью Carthage?

В My Cartfile много библиотек. Когда я делаю carthage update, он проходит через все библиотеки. Это может занять очень много времени.

Есть ли способ обновить только одну библиотеку с помощью Carthage? Что-то вроде этого? (так не пойдет)

carthage update "evgenyneu/moa"

person Evgenii    schedule 03.06.2015    source источник


Ответы (9)


Из версии 0.12 build, checkout и update возьмите необязательный список зависимостей, разделенных пробелами.

Для Cartfile, подобного следующему

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

Вы можете обновить одну зависимость

carthage update Alamofire

или несколько зависимостей

carthage update Alamofire RxSwift

Если вам нужно добавить флаги, добавляйте их последними:

carthage update Alamofire --platform iOS
person Alex Salom    schedule 05.04.2016
comment
carthage update Box --no-use-binaries --platform iOS // если вам нужно указать дополнительные флаги - person nalexn; 23.11.2016
comment
@Alex Salom: Box - это имя репо в Cartfile? Было бы легче понять, если бы вы использовали что-то более знакомое, например, AlamoFire? И что такое часть результата? Другое название репо или? - person Sentry.co; 03.02.2017
comment
@GitSyncApp, да, вы должны написать имена зависимостей через пробел. Я отредактировал свой ответ - person Alex Salom; 06.02.2017
comment
@ MartinRomañuk, что именно не работает? Я только что пробовал приведенный выше пример с carthage bootstrap, и он обработал только одну зависимость из двух, определенных в Cartfile. Взгляните на снимок экрана моего терминала pasteboard.co/I9bARyq.png - person Alex Salom; 08.04.2019
comment
@AlexSalom, честно говоря, вы используете bootstrap, а в ответе сказано использовать update. С bootstrap вы загружаете все, что написано в Carfile.resolved, оно не обновляется. - person Lluis Gerard; 16.09.2019

Carthage теперь поддерживает обновление отдельных зависимостей. Если у вас есть что-то подобное в вашем Cartfile:

github "bitstadium/HockeySDK-iOS"

Затем вы можете обновить только эту зависимость, запустив

carthage update HockeySDK-iOS
person user978510    schedule 05.07.2016

Прямо сейчас ответ - нет ... Если вы запустите carthage help update, вы увидите

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

Как видите, здесь не упоминается возможность указать только одну зависимость для обновления.

Вам следует открыть вопрос в репозитории проекта с просьбой поддержать его.

person mokagio    schedule 19.06.2015

Если фреймворк не хранится в GitHub, или вы используете идентификатор git, и ваш cartfile выглядит так:

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

тогда вы можете обновить только этот, выполнив следующую команду

carthage update repo-name
person SeanRobinson159    schedule 11.08.2017

Я попробовал все ответы, и для меня только удаление или комментирование репозиториев временно и после запуска

carthage update --platform ios

после того, как я восстановлю Catfile до предыдущего состояния

person Ronaldo Albertini    schedule 08.10.2018

В итоге я написал свой собственный сценарий, который создает для меня единую зависимость и объединяет ее с моими существующими зависимостями. Вы можете найти его на странице https://github.com/ruipfcosta/carthage-workarounds.

person Rui    schedule 25.11.2015

Swift 5

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

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

если вы столкнулись с такой ошибкой

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

Затем снова используйте Часть 1 в Терминале

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

и опять

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
person Shakeel Ahmed    schedule 28.02.2020

Похоже, carthage update repo-name не работает на Carthage 0.36.0. Я решил эту проблему, обновив вручную Carthage.resolved. Например, добавьте к Cartfile новую зависимость:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Добавьте в Cartfile.resolved новую зависимость вручную:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

Затем выполните carthage bootstrap, чтобы обновить только одну зависимость:

carthage bootstrap

Он будет использовать Carthage.resolved и просто добавит одну зависимость.

person Denis Kutlubaev    schedule 28.10.2020

Carthage --no-use-binaries и конкретная схема

[Карфагенский поток]

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

Самая длинная фаза - это шаг carthage build (xcodebuild), потому что:

  1. carthage build генерирует fat binary, созданный с использованием lipo [About]

  2. Карфаген строит все shared frameworks schemes проекта. Если вы знаете, какая именно схема вам нужна, вы можете:

    • [UI] Открыть собранный проект из папки Carthage/Checkouts - ›Управление схемами ... -› проверка конкретных схем

    • [Вручную] Оставьте определенные схемы в xcschemes папке .../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

[Carthage --no-use-binaries]

person yoAlex5    schedule 24.04.2020