Bagaimana cara memperbarui satu pustaka dari Cartfile dengan Carthage?

87

Cartfile saya memiliki banyak perpustakaan. Ketika saya melakukannya, carthage updateitu melewati semua perpustakaan. Itu bisa memakan waktu lama.

Apakah ada cara untuk memperbarui hanya satu perpustakaan dengan carthage? Sesuatu seperti ini? (ini tidak akan berhasil)

carthage update "evgenyneu/moa"
Evgenii
sumber

Jawaban:

150

Dari versi 0.12 build , checkoutdan updatemengambil ruang opsional dipisahkan daftar dependensi

Untuk Cartfile seperti berikut ini

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

Anda dapat memilih untuk memperbarui satu ketergantungan

carthage update Alamofire

atau beberapa ketergantungan

carthage update Alamofire RxSwift

Jika Anda perlu menambahkan bendera, tambahkan terakhir:

carthage update Alamofire --platform iOS
Alex Salom
sumber
24
carthage update Box --no-use-binaries --platform iOS // jika Anda perlu menentukan flag tambahan
nalexn
@Alex Salom: Kotak menjadi nama repo di Cartfile? akan lebih mudah dimengerti jika Anda menggunakan sesuatu yang lebih familiar seperti AlamoFire, mungkin? Dan apa porsi Hasil? Nama repo lain atau?
eonist
1
@GitSyncApp, ya Anda harus menulis nama-nama dependensi yang dipisahkan oleh spasi. Saya mengedit jawaban saya
Alex Salom
@ MartinRomañuk apa sebenarnya tidak bekerja? Saya baru saja mencoba contoh di atas carthage bootstrapdan hanya memproses satu dependensi dari dua yang ditentukan di Cartfile. Lihatlah tangkapan layar dari terminal saya pasteboard.co/I9bARyq.png
Alex Salom
@AlexSalom untuk bersikap adil, Anda menggunakan bootstrapsementara jawabannya mengatakan untuk menggunakan update. Dengan bootstrapAnda mengunduh apa pun yang Carfile.resolveddikatakan, itu tidak akan diperbarui.
Lluis Gerard
13

Carthage mendukung pembaruan dependensi tunggal sekarang. Jika Anda memiliki sesuatu seperti ini di Cartfile Anda:

github "bitstadium/HockeySDK-iOS"

Kemudian Anda hanya dapat memperbarui satu dependensi ini dengan menjalankan

carthage update HockeySDK-iOS
pengguna978510
sumber
9

Saat ini jawabannya adalah tidak ... Jika lari carthage help updateAnda, Anda akan melihat

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

Seperti yang Anda lihat, tidak disebutkan opsi untuk menentukan hanya satu ketergantungan yang akan diperbarui.

Anda harus membuka masalah pada repo proyek yang meminta untuk mendukungnya.

mokagio
sumber
9

Jika framework tidak disimpan di GitHub, atau Anda menggunakan gitpengenal, dan cartfiletampilan Anda seperti ini:

git "ssh://[email protected]/teamname/repo-name.git" ~> 1.0

maka Anda hanya dapat memperbarui yang menjalankan perintah berikut

carthage update repo-name
SeanRobinson 159
sumber
6

Saya mencoba semua jawaban, dan bagi saya hanya menghapus atau mengomentari sementara repositori dan setelah berjalan

carthage update --platform ios

setelah saya mengembalikan Catfile ke keadaan sebelumnya

Ronaldo Albertini
sumber
0

Cepat 5

//MARK:- Step 1
carthage update KeychainAccess --platform iOS

carthage update SDKNAME(like i mention KeychainAccess upper) --platform iOS

jika Anda menghadapi Error seperti ini

//MARK:- If this error occur
error: unable to find utility "xcodebuild", not a developer tool or in PATH

Kemudian gunakan Bagian 1 di Terminal Lagi

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

dan lagi

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Shakeel Ahmed
sumber
0

[aliran pembaruan 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

Fase terpanjang adalah buildlangkah [xcodebuild] karena:

  1. fat binarydibuat menggunakan lipo[About]
  2. Carthage membangun semua shared frameworks schemesproyek. Jika Anda tahu skema mana yang Anda butuhkan, Anda dapat:

    • Tinggalkan skema tertentu di xcschemesfolder.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Buka proyek yang dibangun dari Carthage/Checkoutsfolder -> Kelola Skema ... -> tinggalkan skema tertentu

yoAlex5
sumber
0

Sepertinya carthage update repo-nametidak berfungsi Carthage 0.36.0. Saya memecahkan masalah ini dengan memperbarui secara manual Carthage.resolved. Misalnya, tambahkan ke Cartfiledependensi baru:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Tambahkan ke Cartfile.resolveddependensi baru secara manual:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

Kemudian lakukan carthage bootstrapuntuk hanya memperbarui satu dependensi:

carthage bootstrap

Ini akan menggunakan Carthage.resolveddan hanya menambahkan satu ketergantungan.

Denis Kutlubaev
sumber