Как обновить только одну библиотеку из 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
user978510
источник
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
Шон Робинсон159
источник
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папки -> Управление схемами ... -> оставить определенные схемы

yoAlex5
источник
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и просто добавлять одну зависимость.

Денис Кутлубаев
источник