Swift 5.1로 컴파일 된 모듈은 Swift 5.1.2 컴파일러에서 가져올 수 없습니다


91

Xcode 11.0을 사용하여 전통적인 RxSwift.framework스타일 패키지 로 컴파일 한 프레임 워크 (이 경우 RxSwift)가 있습니다.

이것은 Xcode 11.0으로 가져 왔으며 11.1에도 아무런 문제가 없었습니다.

오늘 Apple의 Xcode 11.2 릴리스에 따라 업그레이드하여 오류가 표시되었습니다.

Swift 5.1로 컴파일 된 모듈은 Swift 5.1.2 컴파일러에서 가져올 수 없습니다

컴파일러 불일치를 신속하게 처리하는 데 익숙하며 Xcode 11.2를 사용하여 RxSwift를 다시 컴파일하고 계속 수행 할 수 있지만 Swift 5.1의 헤드 라인 기능은 모듈 안정성 이었습니다.

모듈 안정성이 확보되었으므로 프레임 워크가 모든 새로운 Xcode 릴리스마다 계속 다시 컴파일 될 필요는 없지만 인상적이지는 않습니다.

누군가 여기서 무슨 일이 일어나고 있는지 설명 할 수 있다면 나는 그것을 높이 평가할 것입니다. Xcode 11.2에 버그가 있습니까? 아니면 원래 Xcode 11.0으로 컴파일 할 때 모듈 안정성을 원한다고 말했습니까?



나를 위해 이전 빠른 버전의 툴체인이 작동했습니다 : stackoverflow.com/a/43142147/5846135
Zeero0

답변:


107

OK, WWDC 비디오를 시청하면 다음과 같이 설명합니다. https://developer.apple.com/videos/play/wwdc2019/416/

당신은 설정해야합니다 배포를위한 빌드 라이브러리 에 옵션 예를 그렇지 않으면 빠른 컴파일러는이 켜지지 생성하지 않습니다, 당신의 프레임 워크의 빌드 설정에서을 .swiftinterface기존 라이브러리를로드 할 수있는 미래 컴파일러의 열쇠 파일을.

이것은 project.pbxproj 파일에서 다음과 같이 끝납니다.

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

이 플래그를 설정 한 후 Xcode 11.0 (swift 5.1)을 사용하여 컴파일 한 프레임 워크를 Xcode 11.2 (swift 5.1.2)에서 사용할 수 있었고 모든 것이 올바르게 작동하는 것으로 보입니다.

이 질문 / 답변이 모든 WWDC 비디오를 보지 않은 모든 사람에게 유용한 참고 자료가되기를 바랍니다.

오류 스틸이 지속이에 가면 제품 > 클린 빌드 폴더빌드 다시.


1
대박! 이제하자 모든 3 자 프레임 워크 개발자가이를 발견 할 희망 - 하, 하, :
미하이 Fratu

25
이것은 내 경우에는 도움이되지 않습니다. "YES"로 설정했지만 여전히 오류가 발생합니다. 어떤 아이디어?
davidOhara 19

3
Carthage 및 10 개의 프레임 워크로 작업하고 있습니다 ... 인가 carthage에서이를 데리러 스마트 충분히 .pbxproj의 파일, 또는 @MihaiFratu 위에서 말한대로, 모든 제 3 자 프레임 워크 개발자가 프레임 워크 프로젝트에이 자신을 설정해야합니까?
nteissler

9
필자의 경우 @davidOhara는 Xcode 11.2 의이 알려진 문제와 관련이 있습니다. 모듈이 BUILD_LIBRARIES_FOR_DISTRIBUTION으로 빌드되고 모듈 자체와 이름이 같은 공용 유형을 포함하면 클라이언트가 모듈을 가져 오지 못합니다. Xcode 11.2 릴리스 노트의 (19481048) (FB5863238) : developer.apple.com/documentation/xcode_release_notes/…
Richard Chirino

2
@davidOhara 슬프게도 해결 방법을 찾지 못했습니다. 클래스의 이름을 바꾸는 것은 프레임 워크의 주요 클래스이므로 고객의 코드를 손상시킬 수 있으므로 클래스 이름을 바꿀 수도 없습니다. Xcode 11.2를 사용하여 프레임 워크를 빌드하면 Xcode 11.2에서 컴파일되지만 11.1 이전 버전에서는 컴파일되지 않습니다. 오늘의 Xcode 11.2.1 GM 릴리스에서는 문제가 해결되지 않았습니다. 다음은 신속한 문제 추적기의 티켓입니다. bugs.swift.org/browse/SR-11704 여기에는 레이더도 붙어 있습니다.
Richard Chirino

2

타사 라이브러리를 가져 오는 동안 동일한 오류가 발생했습니다. Xcode에서 툴체인을 사용하여 수정했으며 2019 년 9 월 19 일 릴리스 https://swift.org/download/#releases 에서 가져 왔습니다 . 그 후 라이브러리를 다시 가져와야 작동했습니다.


이것이 가장 간단한 솔루션이었습니다
Krishan Patel

Swift 5.1.2로 컴파일 된 프레임 워크 모듈에 문제가 있습니다. Swift 5.2.2에서 가져올 수 없습니다.이 문제를 어떻게 해결할 수 있습니까?
Kishan Suthar

0

Carthage를 사용하여 RxSwift 프레임 워크를 추가 할 수 있습니다.

기본적으로 Carthage는 유사한 전통적인 RxSwift.framework 스타일 패키지를 제공합니다 .

그런 다음 시도하십시오 carthage update --no-use-binaries.


카르타고를 사용하면 새 컴파일러에서 라이브러리를 다시 작성하기 때문입니다. 문제는 이전 컴파일러가 작성한 바이너리 라이브러리를로드하는 것에 관한 것입니다.
Orion Edwards

0

이로 인해 컴파일러 오류가 사라졌습니다.

  1. carthage bootstrap --platform ios
  2. brew bundle
  3. pod repo update

brew bundle? 무엇을합니까?
skywinder

카르타고를 사용하면 새 컴파일러에서 라이브러리를 다시 작성하기 때문에 Downvote. 문제는 이전 컴파일러가 작성한 바이너리 라이브러리를로드하는 것에 관한 것입니다.
Orion Edwards
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.