[ios] Swift 4.0으로 컴파일 된 모듈은 Swift 4.0.1에서 가져올 수 없습니다.

그러나 동일한 Xcode를 사용하여 프레임 워크를 다시 컴파일했지만 여전히이 오류가 발생합니다.

  • 두 가지 모두를위한 Base SDK iOS 11.1
  • Swift 언어 버전 Swift 4.0
  • 포드 / 카르타고를 사용하지 않음

누군가가 알기를 바랍니다



답변

최신 정보:

Xcode 릴리스 버전의 경우 :

이 오류 (및 Swift 4.1, 4.2 등과 관련된 유사한 오류)는 이전 Xcode 도구로 빌드 된 프레임 워크를 사용하는 Xcode 9.1, 9.2, 9.3, 9.4, 10 등으로 프로젝트를 열 때 발생합니다.

문제를 해결하려면 새로운 업데이트 된 Xcode 도구를 사용하여 Carthage ( carthage update --platform iOS), Cocoapods ( pod update또는 pod install)를 사용하거나 수동으로 프레임 워크를 업데이트하고 다시 빌드하십시오 . 도구는 Xcode를 업데이트 할 때 자동으로 업데이트되어야하지만 그렇지 않은 경우 원래 답변에서 아래에 설명 된 단계를 따를 수 있습니다.

Xcode가 캐시 된 프레임 워크 빌드를 사용하지 않도록하려면 프로젝트 cmd + shift + k와 빌드 폴더 를 정리해야 할 수도 있습니다 cmd + option + shift + k.

경우에 따라 파생 데이터 폴더를 삭제해야 할 수도 있습니다 (Xcode 환경 설정-> 위치-> 파생 데이터 폴더로 이동하면 쉽게 찾을 수 있습니다 ( Thanks Stunner ).

Xcode 베타 버전의 경우 :

아래의 원래 답변을 참조하고 위의 단계를 따르십시오.

원래 답변 :

xcodebuild 도구가 Swift 4.0으로 빌드되고 Xcode 9.1 베타의 Swift 4.0.1과 호환되지 않는 Xcode 9.0으로 설정되어있을 것입니다.

다음 명령을 사용하여 터미널을 체크인하십시오.

xcodebuild -version

또는 Xcode 환경 설정-> 위치로 이동하여 명령 줄 도구를 Xcode 9.1로 확인 / 변경하십시오. 그러면 설정해야합니다.


답변

내 문제는 Swift 4.0.2 용으로 컴파일되지 않은 외부 프레임 워크 때문이었습니다. Carthage를 통해이 파일을 추가 했으므로 다음을 실행합니다.

carthage update --platform iOS

그런 다음 프로젝트를 정리하고 cmd + shift + k폴더를 빌드 cmd + option + shift + k하고 파생 된 데이터 폴더를 삭제 (단순히 휴지통으로 이동하는 것도 가능)하는 것이 저에게 효과적이었습니다.


답변

제 경우에는 SwiftUI를 테스트하기 위해 xCode 11 베타 버전을 다운로드했습니다. 프로젝트를 실행할 때 “Swift 5.1로 컴파일 된 모듈은 Swift 5.0.1 컴파일러로 가져올 수 없습니다 : …” 오류가 발생합니다.

이 문제를 해결하려면. xCode 명령 줄 도구를 새로운 xCode 11 주석 줄 도구로 변경했습니다. 그 후 SwiftUI로 새로운 xcode 프로젝트를 생성 할 수 있습니다.

Xcode-> 환경 설정-> 위치-> XCode 명령 줄 도구

Xcode Commend Line 도구

나는 이것이 새로운 freamework로 테스트하려는 사람을 도울 것입니다. 🙂


답변

여기 에서 작동하던 특정 Xcode 버전의 Xcode Toolchain을 설치 하십시오 .

Xcode 도구 모음에는 특정 버전의 Swift에서 작업하기위한 일관된 개발 환경을 제공하는 데 필요한 컴파일러, lldb 및 기타 관련 도구의 복사본이 포함되어 있습니다.

Xcode의 환경 설정을 열고 구성 요소> 도구 체인으로 이동 한 다음 설치된 Swift 도구 체인을 선택합니다.

이렇게하면 당분간 앱을 컴파일하고 실행할 수 있습니다.


답변

이 문제는 Swift 4.2를 추가하는 Xcode 10 베타에서 발생했습니다. 내 문제는 Carthage 또는 외부 종속성과 관련이 없습니다.

YourTarget > Build Settings > Swift Language Version모든 Xcode 대상으로 이동 하십시오.

내 모든 설정은 Swift 4.

파일 복사 빌드 단계를 추가 한 후 오류가 발생하기 시작했습니다.

: 0 : 오류 : Swift 4.1.2로 컴파일 된 모듈은 Swift 4.2 컴파일러에서 가져올 수 없습니다. /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule

0이 아닌 종료 코드로 인해 MergeSwiftModule 명령이 실패했습니다.

나는 각 목표의 설정 Swift Language VersionSwift 4.2오류를 제거하는합니다.

그러나 모든 대상을 Swift 4똑같이 유효하게 설정 해야하므로 처음에 오류가 발생하는 이유를 잘 모르겠습니다 .


답변

제 경우 (Xcode 9.2) :

나는 Xcode에 갔다 Preferences > Locations > Derived Data

그런 다음 데이터를 삭제하고 깨끗한 빌드를 수행했으며 괜찮 았습니다.


답변

제 경우에는 플러그인과 함께 CocoaPods를 사용 cocoapods-binary하여 라이브러리를 바이너리로 미리 빌드했습니다 . Xcode를 10에서 11로 업그레이드 한 후 Xcode에서 다음 오류가 발생합니다.

Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler

/Pods디렉토리 를 제거하고 pod install.