Как обновить только одну библиотеку из 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 [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
step [xcodebuild] потому что:
fat binary
построен с использованиемlipo
[Около]Карфаген строит все
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
и просто добавьте одну зависимость.