2016-01-04 25 views
14

Tôi hiện đang xem một thư viện chỉ hỗ trợ Carthage làm người quản lý gói. Dự án tôi đang tìm kiếm để tích hợp nó với đã có một số phụ thuộc CocoaPods. Có ai đã thử sử dụng cả hai người quản lý này cùng một lúc?Sử dụng Carthage và CocoaPods trong cùng một dự án

Nó đánh tôi như một ý tưởng tồi, nhưng tôi rất muốn nghe nếu đây là trường hợp trong thực tế.

Trả lời

18

Vấn đề chính bạn sẽ gặp phải là CocoaPods và Carthage không nhận thức được lẫn nhau. Điều này có nghĩa rằng nếu một phụ thuộc được quản lý bởi CocoaPods và một sự phụ thuộc của Carthage chia sẻ một sự phụ thuộc chung, xung đột có thể phát sinh. Carthage yêu cầu bạn phải thêm khung công tác vào dự án có nghĩa là bạn có thể thoát khỏi việc không liên kết bất kỳ phụ thuộc được chia sẻ nào và dựa vào khung được thêm vào bởi CocoaPods, nhưng bạn sẽ không nhận được độ phân giải phiên bản phụ thuộc trên hai phụ thuộc các nhà quản lý và nó sẽ không được rõ ràng như thế nào tất cả các công trình.

Với lý do đó, không có bất kỳ lý do nào khiến bạn không thể sử dụng cả hai và nếu thư viện bạn muốn bao gồm ít hoặc không phụ thuộc, có lẽ vẫn thích sử dụng Carthage hơn là đưa thư viện vào một submodule hoặc thậm chí sao chép nguồn.

Đề xuất của tôi, nếu có thể, là bao gồm các phụ thuộc khác của bạn thông qua Carthage, hoặc để tạo một podspec cho thư viện để bạn có thể sử dụng Carthage hoặc CocoaPods độc quyền.

+0

Đó là khá nhiều những gì tôi figured ... Tôi đã cố gắng cài đặt deps từ cả hai nhà quản lý với nhau, và không chạy vào bất kỳ vấn đề. Nhưng tôi đã thực hiện một podspec cho thư viện chỉ Carthage, vì tôi muốn có deps của tôi xử lý một cách. –

+0

Ngoài ra - Nếu bạn có một Podfile trong repo của bạn và bạn sử dụng Travis-CI, Travis sẽ giả sử bạn muốn cài đặt các pod ngay cả khi bạn không rõ ràng nói với nó để làm như vậy trong .travis.yml của bạn. Nếu bạn chỉ có một .podspec, mặc dù không có vấn đề gì với Travis giả sử bạn đã thiết lập để chạy 'carthage update --platform ' –

Các vấn đề liên quan