Як оновити лише одну бібліотеку з Cartfile за допомогою Carthage?


87

Мій Cartfile має багато бібліотек. Коли я carthage updateце роблю, це проходить через усі бібліотеки. Це може зайняти дуже багато часу.

Чи є спосіб оновити лише одну бібліотеку картгеном? Щось на зразок цього? (це не буде працювати)

carthage update "evgenyneu/moa"

Відповіді:


150

З 0.12 версії build , checkoutі updateприйняти додатковий простір , відокремлене список залежностей

Для файлу Cart, як показано нижче

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? А що таке частина Результату? Інша назва репо чи?
еоніст

1
@GitSyncApp, так, вам потрібно написати імена залежностей, розділених пробілами. Я відредагував свою відповідь
Alex Salom

@ MartinRomañuk, що саме не працює? Я щойно спробував приклад вище зcarthage bootstrap і він обробив лише одну залежність із двох, визначених у файлі Cart. Подивіться на скріншот з мого терміналу pasteboard.co/I9bARyq.png
Alex салом

@AlexSalom, щоб бути справедливим, ви використовуєте, bootstrapтоді як відповідь говорить, що використовувати update. Коли bootstrapви завантажуєте все, що Carfile.resolvedсказано, воно не оновлюється.
Lluis Gerard,

13

Carthage підтримує оновлення окремих залежностей. Якщо у вашому файлі Cart є щось подібне:

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 до попереднього стану



0

Стрімкий 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 [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[Про]
  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.