CocoaPods를 사용할 때 '해당 모듈 없음'
그래서 여기 내 절차가 있습니다. 나는 새를 만드는 Podfile
프로젝트 디렉토리에, 나는 다음과 같은 추가
platform :ios, '9.0'
use_frameworks!
target 'CPod' do
pod 'AFNetworking', '~> 2.5'
pod 'ORStackView', '~> 2.0'
pod 'SwiftyJSON', '~> 2.1'
end
나는 발사 pod install
하고 모든 것이 잘되고 xcworkspace
. 그때에 가서 ViewController.swift
내가 얻을 포드를 가져 오려고 할 경우 No such module 'SwiftyJSON'
내가 할 것 인 경우에, import SwiftyJSON
. 어떤 아이디어?
편집 : SwiftyJSON은 Obj-C가 아닌 Swift 기반 모듈입니다.
Pods
빌드 체계에 프레임 워크를 추가하고 프레임 워크를 빌드 해보세요 . 빌드 한 후 프로젝트를 빌드 / 실행하십시오.
단계 :
podfile을 설치 한 후 프로젝트 .xcworkspace 파일 (.xcodeproj 아님)을 다시 열어야합니다.
- CocoaPods로 저장소 복제
- YourWorkspace / YourApplication.xcworkspace를 엽니 다.
- 실행할 앱을 선택하고 해당 프로젝트에 대한 포함 된 바이너리에 SwiftyJSON.framework 추가 Hit Run
해피 코딩 :)
다음을 사용하여 포드를 다시 설치할 수도 있습니다.
pod deintegrate
그리고
pod install
이것은 나를 위해이 문제를 해결했습니다.
를 눌러 명령 + 옵션 + Shift + K 다음을 실행 하여 응용 프로그램을, 당신은 마술을 볼 수 있습니다.
또는 메뉴-> 제품에서 키보드의 Option을 누르면 Clean Build Folder가 표시됩니다.
Xcode가 어떻게 우리와 함께 그런 일을 할 수 있었는지 재미있어 보이지만 Pod를 사용하여 Swift 라이브러리를 사용했을 때 나에게도 똑같은 일이 일어 났고 너무 많은 노력을 기울인 후 Clean Build Folder로 끝났습니다.
이것이 다른 사람들에게 여전히 도움이 될지 확실하지 않습니다. 그러나 제 경우에는 .podspec 파일에서 종속성을 참조하지 않는 어리석은 실수가되었습니다.
우리는 여러 내부 라이브러리가있는 애플리케이션을 가지고 있으며, 이러한 라이브러리도 서로 종속성을 가지고 있습니다. 우리는 Podfile에서 설명했지만 podspec에서는 설명하지 않았습니다.
따라서 Podfile이 다음과 같더라도 :
애플리케이션 / Podfile
# Development Pods
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib'
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'
ConsumingLibrary / Podfile
# Development Pods
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'
.podspec에서 호출해야합니다.
ConsumingLibrary / ConsumingLibrary.podspec
# TODO
# Add here any resources to be exported.
s.dependency 'DependentLibrary1', '~> 0.1.0-RC'
DependentLibrary1 / DependentLibrary1.podspec
# TODO
# Add here any resources to be exported.
s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC'
ConsumingLibrary를 빌드하고 테스트를 실행할 수있는 이유를 알아 내려고 약 2 시간을 낭비했다고 생각하지만 앱을 빌드하자마자 세 라이브러리를 모두 소비했습니다.
해당 모듈 'DependentLibrary1'이 없습니다.
No such module 문제를 해결하는 pod install 명령 후 pod update를 사용해보십시오 . 나는 방금 시도했고 잘 작동합니다.
감사합니다, Ratneshwar
@ jakub-truhlář가 쓴 것처럼, 근본 문제는 Swift와 Objective-C 라이브러리를 혼합하는 동시성 문제로 인해 누락 된 module.modulemap 파일이지만 수동으로 파일을 생성하는 대신 파생 데이터를 여러 번 정리하는 것이 좋습니다. 프로젝트를 구축하십시오. 프로젝트가 성공적으로 빌드되면 module.modulemap 파일을 저장소에 커밋하여 해당 파일이 손실되지 않도록합니다 (예 : 현재 분기 변경).
당신이있을 때 가끔 발생 OBJ-C의 내 포드 스위프트 (당신이 사용하는 경우에도 프로젝트를 use_frameworks!
에서 .podfile
).
당신은 확실히 경우 포드가 설치되어 있고 여전히 점점되지 않음 등의 모듈을 ,이 시도 :
- Xcode에서 포드 프로젝트로 이동
- 포드
- 영향을받는 포드를 마우스 오른쪽 버튼으로 클릭합니다.
- 파인더에 표시
.framework 접미사 가있는 패키지 파일이 있어야합니다 . 그 안에 Modules 폴더를 만듭니다 . 이 폴더에서 다음 코드를 사용하여 module.modulemap 이라는 파일을 만듭니다 .
framework module MODULE_NAME_HERE {
umbrella header "MODULE_NAME_HERE.h"
export *
module * { export * }
link framework LINKED_FRAMEWORKS_AND_LIBRARIES_THE_POD_NEEDS_HERE
link framework "AdSupport"
link "c++"
link "z"
}
다시 빌드 하면 괜찮을 것입니다.
내가 개발 한 신속한 프레임 워크에서 동일한 문제에 직면했습니다. 프레임 워크에는 git 프로젝트의 종속성이 있었고 프레임 워크 자체는 내 주 프로젝트에 포드로 추가되었습니다. 따라서 이상적으로 종속성은 podspec 파일과 Podfile에도 지정되었습니다.
I didn't faced the problem when accessing through the my main project but when I open the framework standalone it was throwing "No such module" error.
The root cause is, the base configurations is set with the path which points towards my main project instead of the framework itself because I ran podinstall first in my main project and then in the framework project.
Eg: in the project file it was like 0091AB0C861D71C94ADD7240 /* Pods-myframework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "../../Apps/MyMainProject/Pods/Target Support Files/Pods-myframework/Pods-myframework.release.xcconfig"; sourceTree = ""; };
After doing the below mentioned fix, 4444F5B1B35F066E57F96782 /* Pods-myframework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "Pods/Target Support Files/Pods-myframework/Pods-myframework.release.xcconfig"; sourceTree = ""; };
To fix the error,
- Project file -> Configurations -> Set all the configurations set to none.
- Remove Pods folder and Podfile.lock.
- Run 'pod install' first in the framework project direcory and then do pod install in main project directory.
I just updated particular dependencies in terminal
Go to project folder then run below command
pod update your pod name
For me I need to do
pod update ReachabilitySwift
Adding link "c++" in the framework module.modulemap file worked for me
I had this problem when I opened XCode and then selected the workspace of my project via file->open recent.
I found that I had two .xcworkspace files on my filesystem for the same workspace/project.
Opening XCode by double clicking on the correct .xcworkspace file did the trick. The correct one is the one that works.
I later deleted the wrong one.
Had this issue while adding CocoaPods into an old project, which already had manually included libs from before. It happened because Xcode was not resolving to the Framework Search Path
generated by CocoaPods because of values previously set in target's settings.
Solution that helped me:
copy the old path
hit delete to completely clear the
Framework Search Path
settings in the target's column - the path, generated by CocoaPods would appear thereadd the old search path back under the generated one (only needed if you still have some manually added frameworks to work with)
Clean project, wipe Derived Data, build.
The result would look like this (1st line added by Xcode, 2nd added by CocoaPods, and 3rd is manual):
In case of multiple targets. For eg. Target1, Target2
use_frameworks!
target 'Target1' do
pod 'Fabric'
pod 'Crashlytics'
target 'Target2' do
end
end
Then run pod install.
I tried all of these suggestions but nothing worked for me. Instead what'd worked for me was deintegrating pods. Afterwards deleting the pods folder from xcode hierarchy and doing pod install. Suddenly it worked. Don't ask me why because anyways most of these suggestions are hit or miss anyways but I'll be happy if it works for someone else too :)
Make sure to import correct framework name that is defined in .podspec
of the pod.
- clean project
- close xcode
- open xcode
- enjoy
I usually remove Pods
folder and .xcworkspace
file, then I run pod install
again and it helps in almost 100% cases.
My setup
- macOS 10.14 Mojave
- Xcode 10.3
- cocoapods 1.7.5
None of the answers work for me, although some gave partial clues. In my case, the root cause was that I customized my build product paths after running pod install
.
If you run cocoapods right after creating an Xcode project, then it usually works if you open the generated Xcode .xcworkspace
instead of the .xcodeproj
.
Funny things happen if you start tweaking your build product paths after generating the workspace. Because the generated Pods project and its target all refer to your old Xcode project settings.
In my case, my trouble came from:
- I prefer all my build products sitting under the project folder
$(SRCROOT)/build/$(CONFIGURATION)/$(EFFECTIVE_PLATORM_NAME)
. So I went ahead and changed myPre-configuration Build Products Path
to it .... AFTER doingpod install
.
Now, the generated Pods
project, including all its Framework target, still points to the old location, so both the header import and linking of your own project will fail (you'd see Command PhaseScriptExecution failed with a nonzero exit code
when No such module
is fixed).
The fix:
- Delete all Pods stuff including the workspace.
- Regenerate
Pods
project and workspace withpod install
. However, cocoapods hardcodes the build product path to${SRCROOT}/../build
andPre-configuration Build Products
to$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
in my case, which usually points to a temporary~/Library/Developer
subfolder . Still not quite right. Then .... - Make sure the
Framework Search Path
andHeader Search Path
of my own project cover the above paths. - Tweak
Pods
project setting and all dependency Framework'sPre-configuration Build Products Path
to use my preferred paths.
The moral lesson: Always regenerate Pods and verify the key result paths whenever you touch paths in Xcode project settings.
UPDATE
Xcode 11을 통해 Apple은 마침내 혼란스러운 "사전 구성 빌드 제품 경로"를 제거했습니다. 빌드 제품 경로를 사용자 지정하려면 Locations
전역 상대 경로가 미리 적용된 Xcode 환경 설정에서 사용하십시오 .
Objective-C에서 Swift를 사용하려면 컴파일 타임에 Xcode가 자동으로 생성하는 헤더 파일 (NameOfModule + Swift.h)을 가져와야합니다. 이 경우 다음과 같이 헤더 파일에서 SwifityJSON 가져 오기를 시도해야합니다.
#import "SwiftyJSON-Swift.h"
참고 URL : https://stackoverflow.com/questions/31065447/no-such-module-when-i-use-cocoapods
'developer tip' 카테고리의 다른 글
Enum에 숫자가 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.11.23 |
---|---|
bower로 특정 분기의 최신 개정 지정 (0) | 2020.11.23 |
Eclipse / Java-R.string. *의 값은 int를 반환합니까? (0) | 2020.11.23 |
foreach 루프에서 배열 값 설정 해제 (0) | 2020.11.23 |
iOS 10 버그 : UICollectionView가 존재하지 않는 인덱스 경로가있는 셀에 대한 레이아웃 속성을 받았습니다. (0) | 2020.11.22 |