Làm thế nào để cập nhật chỉ một thư viện từ Cartfile với Carthage?


87

Cartfile của tôi có nhiều thư viện. Khi tôi làm carthage updatenó đi qua tất cả các thư viện. Điều đó có thể mất rất nhiều thời gian.

Có cách nào để cập nhật chỉ một thư viện với carthage không? Một cái gì đó như thế này? (điều này sẽ không hoạt động)

carthage update "evgenyneu/moa"

Câu trả lời:


150

Từ phiên bản 0.12 build , checkoutupdatecó một không gian tùy chọn tách ra danh sách các phụ thuộc

Đối với một Cartfile như sau

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

Bạn có thể chọn cập nhật một phần phụ thuộc

carthage update Alamofire

hoặc nhiều phụ thuộc

carthage update Alamofire RxSwift

Nếu bạn cần thêm cờ, hãy thêm chúng sau cùng:

carthage update Alamofire --platform iOS

24
Carthage update Box --no-use-binaries --platform iOS // nếu bạn cần chỉ định thêm cờ
nalexn

@Alex Salom: Hộp là tên của repo trong Cartfile? sẽ dễ hiểu hơn nếu bạn sử dụng thứ gì đó quen thuộc hơn như AlamoFire? Và phần Kết quả là gì? Tên repo khác hoặc?
eonist

1
@GitSyncApp, vâng bạn phải viết tên của các phần phụ thuộc được phân tách bằng dấu cách. Tôi thay đổi nội dung câu trả lời của tôi
Alex Salom

@ MartinRomañuk chính xác thì cái gì không hoạt động? Tôi vừa thử ví dụ trên với carthage bootstrapvà nó chỉ xử lý một phần phụ thuộc từ hai phần được xác định trong Cartfile. Hãy xem ảnh chụp màn hình từ thiết bị đầu cuối của tôi pasteboard.co/I9bARyq.png
Alex Salom

@AlexSalom công bằng mà nói, bạn đang sử dụng bootstraptrong khi câu trả lời nói là sử dụng update. Khi bootstrapbạn đang tải xuống bất cứ điều gì Carfile.resolvednói, nó sẽ không cập nhật.
Lluis Gerard

13

Carthage hỗ trợ cập nhật các phụ thuộc duy nhất ngay bây giờ. Nếu bạn có một cái gì đó như thế này trong Cartfile của mình:

github "bitstadium/HockeySDK-iOS"

Sau đó, bạn chỉ có thể cập nhật một phần phụ thuộc này bằng cách chạy

carthage update HockeySDK-iOS

9

Ngay bây giờ câu trả lời là không ... Nếu bạn chạy, carthage help updatebạn sẽ thấy

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

Như bạn có thể thấy, không có đề cập đến một tùy chọn để chỉ định một phần phụ thuộc để cập nhật.

Bạn nên mở một vấn đề trên repo dự án yêu cầu hỗ trợ điều đó.


9

Nếu khung công tác không được lưu trữ trong GitHub hoặc bạn đang sử dụng số gitnhận dạng và khung của bạn cartfiletrông giống như sau:

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

thì bạn chỉ có thể cập nhật cái đó bằng cách chạy lệnh sau

carthage update repo-name

6

Tôi đã thử tất cả các câu trả lời và đối với tôi chỉ xóa hoặc nhận xét tạm thời kho lưu trữ và sau khi chạy

carthage update --platform ios

sau khi tôi khôi phục Catfile về trạng thái trước đó


5

Cuối cùng, tôi đã viết tập lệnh của riêng mình để xây dựng một phần phụ thuộc duy nhất cho tôi và kết hợp nó với các phần phụ thuộc hiện có của tôi. Bạn có thể tìm thấy nó tại 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

nếu bạn gặp lỗi như thế này

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

Sau đó sử dụng Phần 1 trong Terminal một lần nữa

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

Và một lần nữa

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

0

[quy trình cập nhật 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

Giai đoạn dài nhất là một buildbước [xcodebuild] vì:

  1. fat binaryđược xây dựng bằng lipo[Giới thiệu]
  2. Carthage xây dựng tất cả shared frameworks schemesmột dự án. Nếu bạn biết chính xác lược đồ nào bạn cần, bạn có thể:

    • Để lại các chương trình cụ thể tại xcschemesthư mục.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Mở dự án đã xây dựng từ Carthage/Checkoutsthư mục -> Quản lý lược đồ ... -> để lại các lược đồ cụ thể


0

Có vẻ như carthage update repo-namekhông hoạt động Carthage 0.36.0. Tôi đã giải quyết vấn đề này bằng cách cập nhật thủ công Carthage.resolved. Ví dụ: thêm vào một Cartfilephụ thuộc mới:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Thêm vào một Cartfile.resolvedphần phụ thuộc mới theo cách thủ công:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

Sau đó, làm carthage bootstrapđể chỉ cập nhật một phần phụ thuộc:

carthage bootstrap

Nó sẽ sử dụng Carthage.resolvedvà chỉ thêm một phụ thuộc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.