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


87

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

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

carthage update "evgenyneu/moa"

Ответы:


150

С 0.12 версии build , checkoutи updateпринять дополнительное пространство , отделенное список зависимостей

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

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

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

carthage update Alamofire

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

carthage update Alamofire RxSwift

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

carthage update Alamofire --platform iOS

24
carthage update Box --no-use-binaries --platform iOS // если вам нужно указать дополнительные флаги
nalexn

@Alex Salom: Box - это имя репо в Cartfile? Было бы легче понять, если бы вы использовали что-то более знакомое, например, AlamoFire? А что такое результат? Другое название репо или?
eonist 02

1
@GitSyncApp, да, вы должны написать имена зависимостей через пробел. Я отредактировал свой ответ
Alex

@ MartinRomañuk, что именно не работает? Я только что пробовал приведенный выше пример, carthage bootstrapи он обработал только одну зависимость из двух, определенных в Cartfile. Взгляните на скриншот моего терминала pasteboard.co/I9bARyq.png
Alex

@AlexSalom, честно говоря, вы используете, в bootstrapто время как ответ говорит, что использовать update. Если bootstrapвы загружаете все, что Carfile.resolvedнаписано, оно не обновляется.
Lluis Gerard

13

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

github "bitstadium/HockeySDK-iOS"

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

carthage update HockeySDK-iOS

9

Прямо сейчас ответ - нет ... Если вы пробежите, 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

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

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


9

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

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

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

carthage update repo-name

6

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

carthage update --platform ios

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


5

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


0

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

0

[процесс обновления carthage]

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

Самый длинный этап - это buildэтап [xcodebuild], потому что:

  1. fat binaryпостроен с использованием lipo[About]
  2. Карфаген строит весь shared frameworks schemesпроект. Если вы знаете, какая именно схема вам нужна, вы можете:

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

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


0

Похоже 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и просто добавлять одну зависимость.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.