2017-10-19 19 views
0

나는 carthage bootstrap --platform iOS으로 달렸고 다음과 같은 오류로 인해 realm-cocoa.framework 바이너리 설치를 건너 뛰었습니다 : 호환되지 않는 빠른 버전 - 프레임 워크가 3.1로 빌드되었고 로컬 버전이 4.0입니다. "그리고 빌드가 끝날 때 "Build Failed : 작업이 종료 코드 65와 함께 실패했습니다" 오류가 발생했습니다.카르타고 빌드 실패

그것은 derivedDataPath에 저를 지적하고, 나는 그것이 나에게 "을 알고 PhaseScriptExecution 다운로드 \ 코어 \하자 \ 동기화 /Users/user/Libary/Caches/org.carthage.CarthageKit/ 자세한 내용은 xcodebuild 로그를 확인 DerivedData/9.0_9A ###/realm-cocoa/v2.10.2/빌드/중간체 .noindex/Realm.build/릴리스 -iphoneos/Realm.build/스크립트 -X # X # X # X # X.sh (1 실패) ".

하지만 Realm Cocoa에서 정확히 어떤 일이 일어나고 있는지 또는 해결 방법을 알고 있지 않습니까?

+1

carthage 명령을 다시 실행하고 --no-use-binaries 스위치를 추가해보십시오. (앞에서 두 개의 대시가 있습니다.) 이것은 4.0으로 시도하지는 않았지만 Swift 3.x의 맛 사이의 호환성 문제를 처리 할 때 저에게 효과적이었습니다. –

+0

마이크가 옳습니다.'carthage bootstrap --platform iOS --no-use-binaries'를 실행하면, 하나 이상의 Xcode 버전이 설치되어있는 경우를 대비해서, 명령 행의 Swift 버전이 Xcode의 포함 된 버전과 같게되어 있는지 확인해야합니다. 그것은 '신속한 버전'이며, 4.0을 반환해야합니다. 일단 버전을 확인하면 카르타고 명령을 실행하면 완료됩니다. – Orlando

+0

@MikeTaverne 저는 이것을 시도해 보았습니다. 문제가 발생할 때 대부분 작동합니다. 나는 문제가 더 깊어서 미래의 문제를 해결하기 위해 뭔가를 고칠 필요가 있는지 확신 할 수 없다. – SRMR

답변

2

TL; DR : 최신 빠른 버전을 사용하고 있는지 확인은 엑스 코드 (9)에 포함하고 수행 carthage bootstrap --no-use-binaries --platform iOS --cache-builds

긴 버전 :

구축하는 동안 당신은 엑스 코드에서 가져온 오류 귀하의 프로젝트 Incompatible Swift version - framework was built with 3.1 and the local version is 4.0은 Carthage가 Realm Framework의 사전 구축 된 버전을 다운로드하기 때문에 발생합니다.

그러나이 사전 빌드 된 버전은 이전 버전의 Swift로 컴파일되었습니다 (이 경우에는 v3.1을 가리키는 오류가 사용되었습니다).이 경우의 솔루션은 다른 명령을 사용하여 종속성 설치를 수행합니다 :

carthage bootstrap --platform iOS --no-use-binaries

이 종속성이 성공하려면 구축 프로젝트에 작동합니다. 어쨌든 명령이 실행될 때마다 코어에서 Realm.framework 및 RealmSwift.framework를 처음부터 빌드하므로이 작업에 오랜 시간이 걸릴 수 있습니다. 따라서 Carthage에 빌드를위한 캐시를 포함시킬 수 있습니다.

  • 부트 스트랩, 그래서 Cartfile.resolved의 버전이 사용됩니다, 아니 업데이트 : 종속성은 카르타고는 것이 옵션으로

    carthage bootstrap --no-use-binaries --platform iOS --cache-builds

    으로 설치할 수 있습니다.

  • --no-use-binaries 사전 구축 된 프레임 워크없이 다운로드와 종속 관계를 구축 (3.1 버전 호환성을 피하는.)
  • --platform iOS이 종속성을 구축에만 iOS에서 사용을 위해, 케이스에 애플 TV 또는 Mac OS 용 건물 프레임 워크를 피 의존성이 그것을 지원합니다. 이것은 많은 시간을 절약 할 것입니다!
  • --cache-builds 커티지는 로컬 캐시에 빌드 된 의존성을 저장하고 (필요할 때 사용할 수 있습니다.) 명령을 다시 수행하더라도 저장된 프레임 워크를 복사하고 다시 빌드하지 않습니다.