나는 Carthage와 Cocoapods 프로젝트를 진행했다. 둘 다 하나의 공통된 의존성을 가지고 있습니다 (PureLayout, 정확하게 말하면). 이상하지만 프로젝트는 클래스 재 선언에 대한 오류없이 잘 컴파일됩니다. 질문 : PureLayout의 메서드를 호출 할 때 실제로 작동하는 버전과 의존성의 버전이 무엇인지 - Carthage 's 또는 Cocoapods 'one?CocoaPods and Carthage
답변
Carthage
및 CocoaPods
은 종속성을 구축하고 프로젝트에서 통합하는 것과 매우 다릅니다.
CocoaPods는 중앙 집중식 종속성 관리자이며 새로운 .xcworkspace
작업 영역을 만들어 종속성을 프로젝트에 직접 통합합니다. 즉, 빌드 직후 빌드 의존성에 액세스 할 수 있습니다.
카르타고 (Carthage)는 분산 된 의존성 관리자이며 프로젝트에 의존성을 통합하는 작업을 맡겨 놓습니다. Carthage는 Cartfile
에 지정된 프레임 워크를 빌드하고 Carthage/Builds
폴더로 이동합니다. 빌드 프로세스가 끝나면 종속성을 통합하고 관리하는 것은 당신에게 달려 있습니다. 당신이 CocoaPods와 카르타고와 PureLayout
의존성을 구축 귀하의 경우에는
PureLayout
의 버전을 빌드를 사용한다는 것을 의미
Carthage/Builds
빌드와 카르타고 당신을 떠났다.
또한 여러 패키지/종속성 관리자를 사용하는 것은 바람직하지 않습니다. 당신은 그 사람을 붙잡고 그것에 익숙해 져야합니다.
예, 카르타고가 만든 프레임 워크와 프로젝트를 연결하지 않았다면 Cocoapods 버전이 작동한다는 놀라운 사실이 아닙니다. 그러나 나는 그랬다. Linked Frameworks and Libraries 섹션에 있습니다. 그래서 놀랐습니다. –
CocoaPods 카르타고
(기본적으로)
CocoaPods
대 자동으로 생성하고 응용 프로그램 및 모든 종속성을위한 엑스 코드 작업 공간을 업데이트합니다.
Carthage
은 Xcode 빌드를 사용하여 프레임 워크 바이너리를 빌드하지만 사용자에게이를 통합 할 책임이 있습니다. Carthage’s
유연하고 성도 높아 동안
CocoaPods
방법은 사용하기 용이하다.
Carthage
은 분산 종속성 관리자로 생성되었습니다. 유지 보수 작업을 줄이고 실패의 중심점을 방지 프로젝트에는 중앙 목록이 없습니다. 그러나 프로젝트 발견은 더 어렵습니다. 사용자는 GitHub의 Trending 페이지 또는 이와 비슷한 도구를 사용해야합니다.
CocoaPods
프로젝트 또한 프로젝트에 대한 메타 데이터를 포함하고이를 구축 할 방법을 지정하는 podspec 파일로 알려진 무엇을해야합니다.
Carthage
은 Xcode 빌드를 사용하여 종속성을 빌드하는 대신 단일 작업 영역에 통합하는 대신 유사한 사양 파일은 없지만 종속성에는 제품을 작성하는 방법을 설명하는 자체 Xcode 프로젝트가 포함되어야합니다.
궁극적으로 Xcode의 책임을 대신 수행하지 않고 프레임 워크 작성자를 위해 추가 작업을하지 않고도 작업을 완료하는 가장 간단한 도구 (dependency manager
)를 원했기 때문에 Carthage
을 만들었습니다.
CocoaPods
은 Carthage
에없는 많은 놀라운 기능을 제공하지만 추가 복잡성을 희생합니다.
여기에 https://medium.com/ios-os-x-development/cocoapods-vs-carthage-675633e89c3e에 대한 좋은 설명이 있습니다. –