Xcode를 사용하여 "No such module"오류가 발생하지만 프레임 워크가 있습니다.


344

현재 Swift로 코딩 중이며 오류가 발생했습니다.

그러한 모듈이 없습니다

그러나 모듈이 내 프로젝트에 있고 "링크 된 프레임 워크 및 라이브러리"와 "내장 바이너리"에 선언되어 있기 때문에 이해가되지 않습니다.

프레임 워크는 Objective-C에 있으므로 브리지 헤더를 작성했습니다.

Xcode가 프레임 워크를 인식하도록하려면 어떻게해야합니까?

에러 모듈

계획

링크 프레임 워크, 라이브러리

헤더 브리지


20
너무 미스터되지 않습니다. 명백하지만 당신은 완전한 청소와 빌드를 시도 했습니까?
Kalel Wade

28
프레임 워크 헤더가 브리징 헤더 파일에 이미 포함되어 있으면 Swift 소스 파일로 가져올 필요가 없습니다.
Martin R

2
또한 수입시 따옴표를 사용해야 할 수도 있습니다.#import "Social/Social.h"
Martin R

3
xcode에서 CocoaPods 'no such module error'와 동일한 오류.
AsimRazaKhan

1
배포 대상을 11에서 10으로 변경했지만 Podfile에서 잊어 버렸습니다 platform :ios, '10.0'. 그게 해결책이었습니다.
Artur Guseynov

답변:


321

왜 이런 일이 발생하는지 잘 모르겠지만 문제를 해결하는 한 가지 방법은 빌드 설정 으로 이동하여 문제 의 프레임 워크가 포함 된 폴더 의 프레임 워크 검색 경로 를 정의하는 것입니다. 프레임 워크가 프로젝트 디렉토리에있는 경우 프레임 워크 검색 경로를 $(SRCROOT)로 설정하고 재귀로 설정하십시오.


5
감사. 타겟 빌드 설정이 아닌 프로젝트 빌드 설정에서이 작업을 수행해야했습니다
Pulsar

8
나를위한 트릭은 프레임 워크 검색 경로에서 사용할 프레임 워크의 경로를 찾는 것이 었습니다. $ {TARGET_BUILD_DIR} /YourFrameworkName.framework가 잘 작동합니다. 또한 참조 stackoverflow.com/questions/32816507/...
크리스 왕자에게

11
Project Build Settings대신 이 작업을 수행해야했습니다 Target Build Settings.
Maxim Mikheev

378
나는 화장실에 가서 이것을 고쳤다. 내가 돌아 왔을 때 그것은 효과가 있었다. 나는이 스레드의 모든 것을 시도했다고 확신합니다. 나는 또한 어느 시점에서기도했다.
nmdias

2
수정 사항에 대한 참고 사항 : $ (SRCROOT)는 포드 프로젝트의 프레임 워크 검색 경로에 추가했을 때만 효과가있었습니다.
addzo

549

금요일 오후 또는 오전 1시 이후 인 경우 :

xcodeproj대신 열면 xcworkspace이와 같은 오류가 발생합니다.


2
나는 이것을 성배로 시도했다. 이상한. 누가 알지만 끝내고 작업 공간을 다시 열면 실제로 잘 작동했습니다. 청소하고 건설하십시오.
mondousage 2016 년

3
9pm fastlane을 사용하여 gym (workspace : ----) 대신 gym (프로젝트 : ---)을 지정했습니다. 감사합니다!
RickiG

1
Xcode가 충돌 한 후 버그 보고서에서 '다시 열기'응용 프로그램을 선택했습니다. 나는 다음에 더 잘 알 것이다.
Stamp

XCODE를 다시 설치했는데 최근에 열린 프로젝트를 통해 앱을 열었 기 때문에이 오류가 발생했습니다. 프로젝트를 닫고 File-> Open-> xcworkspace 파일을 선택하면 모든 것이 작동합니다.
Dpedrinha

xcodebuild -workspace yourproject.workspace 명령 줄에 빌드 할 때도 적용됩니다.
벤 버처

57

하위 프로젝트의 구성 이름이 "부모"프로젝트의 이름과 일치하는지 확인하십시오. 구성 이름이 정확히 대소 문자를 구분하지 않으면 Xcode는 보관 프로세스를 중단하고 "No such module ..."오류를 표시합니다.

즉, "AppStore"라는 구성의 "부모"프로젝트가있는 경우 모든 하위 프로젝트에도이 구성 이름이 있어야합니다.

첨부 된 스크린 샷을 참조하십시오.

"부모"프로젝트의 구성 설정

첫 번째 하위 프로젝트의 구성 설정

두 번째 하위 프로젝트의 구성 설정


1
내 경우, 하위 프로젝트는했다 DebugDistribution그 부모 프로젝트가 구축을 위해 노력했다 Release. 해결책은 Distribution자식 프로젝트에서 복사본을 만들고 그 복사본의 이름을 바꾸는 것이 었습니다 Release.
olivaresF

2
이로 인해 문제가 발생했지만 타사 하위 프로젝트를 만지고 싶지 않기 때문에 사용자 지정 구성의 프레임 워크 검색 경로를 추가하여 문제를 해결했습니다. :)
DeFrenZ

감사합니다! 내 주요 프로젝트에는 3 가지 구성이 있습니다. 그래서 프레임 워크에 대해서도 똑같이했으며 도움이되었습니다.
daxh 2018 년

Xcode가 중첩 된 하위 프로젝트의 특정 구성을 빌드하는 방법에 대한 단서가 있습니까? 기본 프로젝트에 새 구성을 추가하는 것과 너무 연결되어 하위 프로젝트 구성의 이름을 바꾸고 싶지 않습니다.
Dren

프로젝트에 3 개의 구성이 있었기 때문에 기본 "Debug"및 "Release"구성으로 이름이 바뀌 었으므로이 방법이 도움이되었습니다. 프레임 워크를 업데이트하여 동일한 3 가지 구성을 사용하고 프레임 워크를 빌드했으며 모든 것이 예상대로 작동했습니다.
Yuri

44

이 질문에 대한 의견에서 Martin R 의 대답이 왜 그렇게 무시 되는지 잘 모르겠습니다 .

당신은 단순히 시도 있는지 확인 이미 브리지 헤더에 추가 될 때 프레임 워크의 가져 오기를 건너 뜁니다 .

도움이 되었기를 바랍니다


38

Cocoapods와 Swift 사용하는 것과 같은 문제가있었습니다 . Podfile에서 다음 줄을 보지 못했습니다.

# Uncomment this line if you're using Swift
# use_frameworks!

그래서 내가해야 할 일은 다음과 같이 변경하는 것입니다.

# Uncomment this line if you're using Swift
use_frameworks!

... 그리고 그것은 효과가 있었다 :)


그래, 나에게 use_frameworks는 내 Podfile에 없어서 추가했다
PhoenixB


18

이 문제도 발생했습니다. 나를위한 수정은 두 프로젝트 사이의 아카이브 구성표가 일치하지 않았다는 것입니다. 프레임 워크 프로젝트와 앱 프로젝트가있는 xcworkspace가 있습니다. 문제는 내 앱의 보관 구성표에서 프레임 워크가 보관 구성표에 사용하는 것과 다른 빌드 구성을 사용하고 있다는 것입니다. 빌드 구성을 모두 릴리스로 설정했으며 문제가 해결되었습니다.


이것은 나를 위해 일했습니다. 기본 프로젝트 Build Config를 다시 Release에서 Release로 설정 했으므로 이제 하위 프로젝트와 일치합니다. 모두 작동합니다. 감사합니다!
Charlie Seligman

1
Google 프레임 워크에는 프로젝트에 사용한 AdHoc 구성이 없었으므로 프로젝트와 함께 빌드되지 않았습니다.
Johan

15

다음 단계가 나를 위해 일했습니다.

  1. xcode 종료
  2. "pod update"터미널에서 실행
  3. .xcworkspace다시 열고 빌드하십시오.

1
이 단계는 나를 위해 일했습니다 ... 감사합니다 ... "Pod install"을 실행했지만 "Module XXX not found .."를받지 못했습니다. 그러나 XCode를 종료 한 다음 Workspace를 다시 열면 도움이되었습니다.
Aks

내 문제는 새로운 빌드 구성 및 구성표를 추가 한 후 "모듈을 찾을 수 없습니다 ..."라는 메시지가 표시됩니다. Xcode가 작동하지 않으면 종료 pod install됩니다.
William Hu

이것은 나를 위해 일했습니다. 이것이 문제를 해결하는 이유에 대한 설명이 있습니까?
Nico Cernek

그것은 나를 위해 일했다. projectname.xcworkspace를 다시 연 후 청소하고 다시 빌드해야 작동합니다.
Prashant

14

필자의 경우 프레임 워크 가져 오기에서 잘못된 일을 파악하려는 많은 시도 끝에 결국 프레임 워크 자체가 문제라는 것을 알았습니다. 신뢰할 수있는 소스에서 프레임 워크를 가져 오지 못한 경우 프레임 워크를 검사하고 그 안에 module.modulemap 파일이있는 Modules 폴더가 있는지 확인해야합니다. module.modulemap이 없으면 "No such module 'MyFramework'"오류가 발생합니다.

SwiftyJSON.framework의 디렉토리 구조를 보여주는 예

Modules 폴더에 "MyFramework.swiftmodule"폴더가 없으면 프레임 워크를 찾을 수 있지만 Xcode는 해당 내용을 알지 못하므로 다른 오류가 발생합니다.


2
어떤 이유로 xcode 9.1에있는 경우에도 이것이 표시되지 않습니다. 프레임 워크> Finder에서 표시>를 마우스 오른쪽 단추로 클릭하고 모듈 맵이 있는지 확인하십시오. 포드 프로젝트에서 수동 프레임 워크를 사용하는 경우 새 수동 프레임 워크를 추가했거나 기존 프레임 워크를 업데이트 한 경우 포드를 다시 빌드하십시오.
크리스토퍼 라센

1
감사! 파일을 직접 만들었고 작동했습니다. framework module NAME {umbrella header "NAME.h"export * module * {export *}}
Sjoerd Perfors

12

프레임 워크가 실제로 있고 경로 등에 있다고 가정하면 ~ / Library / Developer / Xcode / DerivedData / ModuleCache 디렉토리를 삭제하십시오 (프로젝트를 정리하고 프로젝트 별 파생 데이터를 삭제하십시오).

표준 정리를 수행하면 ModuleCache 디렉토리가 다시 작성되지 않습니다.


1
나는 당신이 나에게 말한대로 그것을했고, 그것은 작동하지 않습니다 : /
alexandresecanove

1
그러면 내가 만난 것과 똑같이 보이는 다른 문제에 직면 할 수 있습니다. :-/
Brad Brighton

나는 Cocoapod와 같은 문제가 있었고 ModuleCache에서 파일을 삭제하면 나에게 속임수가되었습니다.
HolySamosa

10

무엇 나를 위해 일한 것은 또 다른 질문에 대한 솔루션입니다. Xcode를 닫고 프로젝트를 작업 공간으로 다시여십시오.
프로젝트 폴더로 이동하여 .xcodeworkspace 파일을여십시오.
프로젝트 대신 작업 영역을 열면 포드가 프로젝트 네비게이터에서 최상위 프로젝트로 나타납니다.


9

Find implicit Dependencies구성표의 빌드 옵션 이 켜져 있는지 확인하십시오 !


7

며칠 전에 같은 오류가 발생했습니다. 문제를 해결 한 방법은 다음과 같습니다.

오류는 "모듈을 찾을 수 없음"입니다

  • 루트 프로젝트 디렉토리에 Podfile 생성
  • cocoapods 설치 (Swift 및 iOS 프로젝트의 종속성 관리자)
  • 포드 설치 실행
  • 프로젝트 빌드 설정으로 이동하십시오.

    • Swift 컴파일러-코드 생성에서 Objective-c bridging Header 찾기 (여기서 Swift 컴파일러를 찾지 못하면 프로젝트에 새 Swift 파일을 추가하십시오)
    • 라이브러리 헤더 파일을 왼쪽에서 브리징 헤더로 끌어다 놓습니다 (첨부 된 이미지 참조)여기에 이미지 설명을 입력하십시오
  • 새로운 브리징 헤더 파일 (예 : TestProject-Bridging-Header.h)을 생성하고 Swift Compiler → Objective-C Generated Interface Header Name (참조, 위 이미지 참조) 아래에 넣습니다.

  • TestProject-Bridging-Header.h 파일에서 #import "Mixpanel / Mixpanel.h"를 ​​작성하십시오.
  • Swift 파일에서 코드는 다음과 같아야합니다. Import Mixpanel (예 : 라이브러리 이름)

그게 다야.


이 답변이 도움이되었습니다. MBProgress를 설정하려고 할 때 ios-support.blogspot.com/2017/04/…의 지시 사항을 따라 갔습니다 .
Vette

6

자, 같은 문제가 어떻게 해결되었는지 파생 데이터 위치를 기본값으로 유지하지 않고 작업 공간 디렉토리를 기준으로 설정하는 것이 었습니다. xcode의 환경 설정으로 이동하십시오. 환경 설정에서 위치 탭으로 이동하여 파생 데이터를 상대로 설정하십시오. 도움이 되길 바랍니다.


그것은 한 번만 작동 한 다음 내가 실행할 때 모듈을 찾지 못하는 동일한 문제로갑니다.
nycdanie

5

같은 오류가 발생했습니다.

import Firebase

그러나 주 대상 섹션에 포드를 추가하지 않고 Podfile의 Test 및 TestUI 대상에만 추가한다는 것을 알았습니다.

명령으로

pod init

xcode 신속한 프로젝트의 경우 다음 Podfile이 생성됩니다.

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

따라서 적절한 자리 표시 자에 포드를 추가해야합니다.


5

tvOS와 같은 플랫폼을 구축하는 경우 Apple TV (예 : 일치) 시뮬레이터가 선택되어 있는지 확인하십시오.

iOS 시뮬레이터를 선택하여 tvOS 앱을 빌드하면이 오류가 발생했습니다. 모든 종류의 빌드 문제를 찾기 위해 한 시간 동안 더 나은 시간을 보냈습니다 ... doh.


1
iOS 프로젝트를 빌드 할 때 "My Mac"을 선택한 경우에도 동일하게 적용됩니다. Xcode가 왜 이것을 허용하는지 모르겠습니다 ... 😒
Klaas

감사합니다! 지금은 분명하지만 오류로 인해 더 복잡한 솔루션을 찾게되었습니다!
Dan Messing

5

필자의 경우 IPHONEOS_DEPLOYMENT_TARGET 앱은 9.3으로 설정되었지만 새로 만든 프레임 워크에서는 10.2로 설정되었습니다.

대상 플랫폼의 요구 사항이 앱 요구 사항보다 높기 때문에 암시 적 종속성 해결 프로그램이 새 프레임 워크를 무시했습니다 .

내 응용 프로그램 배포 대상과 일치 하도록 프레임 워크 iOS 배포 대상 을 조정 한 후 프레임 워크가 성공적으로 컴파일 및 링크되었습니다.


감사. 몇 시간을 낭비한 후 배포 대상이 문제라는 것을 알았습니다.
niks

4

를 사용하여 몇 가지 프레임 워크를 추가 한 것과 동일한 오류가 발생했습니다 Cocoapods. 프로젝트에서 포드를 사용 xcodeworkspace하는 경우 대신을 사용해야 합니다 xcodeproject. xcodebuild를 통해 프로젝트를 실행하기 위해 명령 에 -workspace <workspacename>매개 변수를 추가 xcodebuild했으며 완벽하게 작동했습니다.


새로운 질문이 있으면 질문하기 단추를 클릭하여 질문하십시오 . 평판이 충분 하면 질문을 반박 할 수 있습니다 . 또는 즐겨 찾기로 "별표"를 지정하면 새로운 답변이 표시됩니다.
Alessandro Cuttin

@pawan singh 당신은 저를 위해 몇 시간을 절약했습니다, 감사합니다!
Dmitry Senkovich

3

나는 것을 발견 Import Paths에서이 Build Settings사용자 정의 (MySQL의) 모듈의 잘못이었다. 올바른 방향을 가리키면 메시지가 사라졌습니다.


@rplankenhorn 글쎄, 당신이 당신의 컴퓨터에 그것들을 넣은 곳. find모르는 경우 a를 실행하십시오 .
qwerty_so

3

나는 이것을 고정시켰다

대상-> 일반-> 링크 된 프레임 워크 및 라이브러리

Workspace폴더 의 맨 위에 있어야하는 프레임 워크를 추가하십시오 . 엉덩이에 통증이.


3

방금 코코아 포드를 삭제했습니다. 그런 다음 포드 설치를 수행하여 제거했습니다. 그런 다음 방금 podfile에 다시 추가하고 다시 설치했습니다. 그것은 효과가 있었다. 이유가 확실하지 않습니다.


3

이미 포드를 설치했습니다. 장치에서 응용 프로그램을 빌드 할 때 아무런 문제없이 빌드가 작동했지만 아카이브가 작동하지 않았습니다. 방금 실행합니다.

pod install

새 포드가 설치되지 않았습니다. .xcodeproj 파일 만 재생성되고 아카이브가 작동하기 시작했습니다.


3

엑스 코드 10.1에서 나를 위해 솔루션은 변경했다 빌드 시스템작업 영역 설정 파일 메뉴에서. 기본적으로 New Build System 으로 설정되어 레거시 빌드 시스템으로 변경되었으며 트릭을 수행했습니다.

여기에 이미지 설명을 입력하십시오


친구 감사합니다, 당신은 내 하루를 구 했어요! +1
DungeonDev

3

문제가 발생할 수있는 몇 가지 잘못된 구성이 있습니다.

  1. 파일 은 열지 .xcworkspace않았지만 열 었는지 확인 .xcodeproj하십시오. 또한 빌드 Social하기 전에 먼저 빌드 했는지 확인하십시오 TriviaApp.
  2. 기본 앱이있는 모든 모듈에 대해 iOS Deployment Target이 동일하게 설정되어 있는지 확인하십시오. 예를 들어 TriviaApp배포 대상이로 설정되어 9.0있고 Social배포 대상도로 설정되어 있어야 9.0합니다.
  3. 메인 모듈 ( TriviaApp)과 사용 된 프레임 워크 ( Social)가 동일한 구성 세트를 가지고 있는지 확인하십시오 . 당신의 프로젝트가 세 가지 구성이있는 경우 즉, Debug, Release, ReleasePremium사회 프레임 워크보다도 세 가지 구성이 필요합니다 Debug, Release, ReleasePremium. 또한 아카이브 구성이 TriviaApp및에 대해 동일하게 설정되어 있는지 확인하십시오 Social. 즉, 귀하의 경우 TriviaApp의 구성표로 설정 아카이브 ReleasePremium, 당신 Social의이 계획은 또한으로 설정해야 아카이브 ReleasePremium.
  4. 에 파일이 이미 추가 된 경우 Social.swift파일 을 가져올 필요가 없습니다 Bridging-Header.h.
  5. 문제의 경우 포드 파일에서 온, 당신은 주석 처리를 제거해야합니다 #use_frameworks!으로 use_frameworks!당신에게서 Podfile. 포드에 Social종속 된 경우 포드를 다시 설치해도됩니다 .
  6. 위 단계 중 어느 것도 작동하지 않으면 파생 데이터 폴더를 삭제 하고 다시 작성하십시오.

와우, 나는 당신의 도움 없이는 결코 알아낼 수 없었을 것입니다. 실제로 기본 프로젝트에 사용자 정의 구성이 추가되었지만 프레임 워크에서 누락되었습니다.
Iulian Onofrei

@lulian 도움이 된 것을 기쁘게 생각합니다
Sazzad Hissain Khan

2

카르타고를 사용하는 경우 건물 설정의 프레임 워크는 일반적으로

$(PROJECT_DIR)/Carthage/Build/iOS

당신이 실행하는 경우 carthage update --platform ios --no-build(시간을 절약하기 위해) 빌드 폴더 안에 파일이 reacreated되지 않습니다, 다음 모듈 엑스 코드없이 사용할 수 것이다.

내 경우에는을 실행 carthage update --platform ios한 다음 내 문제가 해결되었습니다.


2

General => Linked Frameworks and Libraries에서 내 추가 ./Pods/Pods.xcodeproj하고 트릭을 수행했습니다.


2

나를 위해 선택한 구성에 대해 Build Active Architecture Only 가 Yes로 설정되었습니다. 이것은 트릭을했다 :

왼쪽 프로젝트 탐색기에서 "팟"을 선택하고 "빌드 설정"을 선택하고 " 아니오로 활성 아키텍처 만 빌드"를 선택하십시오.


1

위의 모든 방법이 내 경우처럼 당신에게 효과가 없다면. 전날에는 문제가 없었지만 다음날 아침에도 같은 오류가 발생했습니다. 방금 참조를 제거하여 프레임 워크를 제거하고 다시 추가했습니다. 나는 이것이 어리석은 소리 일지 모른다는 것을 알고 있지만, 효과가있었습니다.


1

FacebookSDK를로드하는 데 비슷한 문제가 있었고 빌드 설정의 프레임 워크 검색 경로~ / Documents / FacebookSDK (프레임 워크가있는 검색 )를 추가 한 후 FBSDKShareKit 모듈을 가져올 수있었습니다.


1

가치가있는 것 (Xcode 7.2 / Swift 2를 사용하는 것이 처음 임)이지만 프로젝트 디렉토리의 라이브러리에서 .swift 파일을 사용하면 자동으로 액세스 할 수 있으며 using 문이 필요하지 않습니다.

예 : SwiftyJSON을 사용하고 있으며 프로젝트에 SwiftyJSON.swift 파일 만 있으면됩니다. 이 using진술은 실제로 나에게 '그런 모듈 없음'오류를주고 그것을 해결하면 해결되었으며 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.