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

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

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

carthage update "evgenyneu/moa"

6 ответов

Решение

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

Для Cartfile вроде следующего

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

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

carthage update Alamofire

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

carthage update Alamofire RxSwift

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

github "bitstadium/HockeySDK-iOS"

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

carthage update HockeySDK-iOS

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

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

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

carthage update repo-name

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

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

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

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

carthage update --platform ios

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

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

[процесс обновления 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

Самая длинная фаза - это buildstep [xcodebuild] потому что:

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

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

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

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

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

Другие вопросы по тегам