programing

iOS - 코코아 포드에서 헤더 파일을 찾을 수 없는 빌드 실패

magicmemo 2023. 5. 31. 15:48
반응형

iOS - 코코아 포드에서 헤더 파일을 찾을 수 없는 빌드 실패

저는 코코아 포드를 이용한 iOS 프로젝트가 있습니다.다른 개발자가 같은 프로젝트를 시작하기 전까지는 모든 것이 순조롭게 진행되었습니다.그는 (내가 아는 한 코드에만) 약간의 변경을 가했고 레포에 새로운 지점을 만들었습니다.그의 브랜치를 확인하고 빌드하려고 했지만 오류가 발생했습니다. ASLogger/ASLogger.h 파일을 찾을 수 없습니다.

프로젝트 전체를 삭제하고 새로 복사본을 만들고 'Pods install'을 사용해도 빌드 실패는 여전합니다.어디에 문제가 있는지 아십니까?더 필요한 정보가 있으면 물어보세요.

갱신하다

다음 항목을 확인합니다.Podfile를 포함합니다.link_with구성 파일이 없는 대상에서.코코파드는 기본적으로 첫 번째 대상만 설정합니다.

platform :osx, '10.7'
pod 'JSONKit',       '~> 1.4'

link_with 'Pomo', 'Pomo Dev', 'Pomo Tests'

업데이트 종료


참고: 아래 단계는 프로젝트->정보->구성을 조사해야 합니다.


저도 비슷한 증상이 있었는데요.pods.xcconfig 파일에 .target건설하려고 했어요.다른 제안된 솔루션 중 일부는 저에게 효과가 있었지만, 이 솔루션은 근본적인 문제의 일부를 해결하는 것처럼 보였습니다.

Pods.xccconfig가 작동하지 않음

간단한 해결책은 세트가 하나도 없는 대상의 구성 파일 세트를 변경하는 것이었습니다.

Pods.xcc 구성 작업

머리글을 가져오지 않는 경우 다음 항목에서 충돌이 발생했을 수 있습니다.HEADER_SEARCH_PATHS를 추가해 .$(inherited)CocoaPods의 .xccconfig 파일에 포함된 검색 경로를 가져올 수 있도록 빌드 설정의 헤더 검색 경로로 이동합니다.

이렇게 하면 충돌을 해결하고 소스를 올바르게 가져올 수 있습니다.

1.체크

빌드 설정 -> 검색 경로 -> 사용자 헤더 검색 경로 ->

  • "${PODS_ROOT}/" 재귀

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력 여기에 이미지 설명 입력

2.Import KEY POINT)을 확인합니다.podfile설정되어 있는

use_frameworks!

당신의 것에서File-Bridging-Header.h 이 포터는이좋합니야다해아것을맷▁▁like합다니▁,the▁form▁should를 좋아해야 합니다.

#import "MBProgressHUD.h"

그렇지 않으면 아래에 있어야 합니다.

#import <MBProgressHUD.h>

3.그것은 일임에 틀림없습니다! 저를 믿으세요.

헤더 파일들, 당신은 나의 죽음이 될 것입니다...

(견적 포함)을 추가하여 최종적으로 작동하게 되었습니다.

"${PODS_ROOT}/BuildHeaders"

사용자 헤더 검색 경로 항목으로 이동하고 '재귀적'을 선택합니다.

찾았습니다${PODS_HEADERS_SEARCH_PATHS}branch에 않기 에 누되었내개발브락랜치에정않의다았지되니습고it▁is▁added다않누니▁so를 추가했습니다. 그래서 저는 추가했습니다."$(SRCROOT)/Pods/Headers/" 헤더 검색 의

저는 괜찮습니다.

다른 두 대답 모두 여기에 도움이 되지 않았습니다.이 문제를 해결할 수 있는 다른 두 가지 문제를 발견했습니다.

편집 이런 식으로 심볼 링크를 확인할 수 있습니다. 확장자 없이 'check'라는 이름의 텍스트 파일을 만듭니다.다음 행을 복사합니다.

file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h
if [[ ! -e $file &&  -L $file ]]; then
  echo "$file symlink is  broken!"
else
  echo "symlink works"
fi

그런 다음 터미널로 이동하여 체크 파일이 있는 폴더로 변경하고 입력합니다.

bash check

제가 성공한 것은 다음과 같습니다.

Target > "Build Settings" 탭으로 이동하여 "User Header Search Paths" 설정을 찾습니다.

이 값을 "$(BUILT_PRODUCTS_DIR)"로 설정하고 "Recursive" 확인란을 선택합니다.

이제 빌드된 대상이 워크스페이스의 공유 빌드 디렉토리를 검색하여 연결 가능한 헤더 파일을 찾습니다.

====

갱신하다

저는 최근에 비슷한 (약간 다르지만) 문제가 있었습니다.가 Xcode를 수 ..xcodeproj가 아닌 .xcworkspace파일. 미래에 다른 사람들을 도울 수도 있습니다.

의 것들 중 것도 가 없었고 위의내중아것당효없당과었가방신다것금전입으로 에 이 입니다.use_frameworks!읽으십시오. Pod 파일다참조을:

의 모든 을 사용해 보았는데, 경로에 것이 에 훨씬 더 시도했습니다. 위사모솔루본경헤결검대로더의색것아것됩다니때알가전되을할다이니환게습경었든는로니우라이과한에션을용해▁▁to▁you▁i▁header▁at다▁▁when'▁it니▁aboves▁and▁it▁isn▁that▁that위때;가▁all의▁a▁solutions▁the▁before▁search▁case▁learningular▁tried▁my▁more▁partic할전환'▁lot이경▁aboutt▁all▁in로우든모다루솔되알니use_frameworks!Pod 파일에 더 이상 프레임워크를 브리징 헤더에 포함할 필요가 없으며, 실제로 Xcode는 매우 도움이 되지 않는 "헤더를 찾을 수 없음" 오류를 발생시킵니다.

파일에서 Swift .import Module필요에 따라 Swift 프레임워크와 마찬가지로 개별 Swift 파일에 저장할 수 있습니다.

클래스에서 ) 가져오기로 을 의미함). Obj-C는 FBSDK에서 FBSDK를 사용합니다.#import "Module.h"#import <Module/Module.h>프레임워크 이름을 입력하기 시작하면 자동으로 완료됩니다.나의 경우에는.<AFNetworking/AFHTTPRequestOperationManager.h>).

편집: 저는 그 이후로 그것을 하는 것을 배웠습니다.@import Module훨씬 더 안전한 우산 파일을 사용합니다.

Cocoapods 스타일을 수입해 보셨습니까?

#import <ASLogger.h>

사이트의 정보가 명확하지 않습니다. 풀 요청을 제출했습니다.

https://github.com/CocoaPods/cocoapods.org/pull/34

업데이트: 그들은 내 요청을 철회했습니다 :)

Wiki는 이 문제를 해결하는 방법에 대한 조언을 제공합니다.

Xcode가 종속성의 헤더를 찾을 수 없는 경우:

포드 헤더 파일이 포드/헤더에 올바르게 연결되어 있고 HEADER_SEARCH_PATH를 재정의하지 않는지 확인합니다(#1 참조).Xcode에서 여전히 찾을 수 없는 경우 마지막 수단으로 #import "Pods/SSZipArchive"와 같이 가져오기를 추가할 수 있습니다.h."

저는 팀 내에서 유일하게 동일한 문제를 경험한 개발자였습니다. 이 문제는 모든 사람에게 완벽하게 적용되었기 때문에 저는 이 문제가 제 환경이 되어야 한다는 것을 깨달았습니다.해봤습니다.git clone다른 디렉터리에 있는 동일한 프로젝트의 경우 완벽하게 컴파일되었으며, 프로젝트 경로에 대한 Xcode 캐싱 항목이어야 한다는 것을 깨달았습니다. "somewhere"는 파생 데이터 폴더입니다. 제거하고 프로젝트를 정리하면 됩니다.

다음 위치로 이동하여 경로를 가져오고 파인더에서 폴더를 열 수도 있습니다.

Xcode -> 기본 설정 -> 위치 -> **파생 데이터

빌드 설정에서 아래 내용을 업데이트할 것이며 오류가 발생하지 않았습니다.이것들을 확인하기 위해 당신의 코코팟을 업데이트할 때의 것들입니다.

빌드 설정

비트 코드 사용 - 예(비트 코드를 사용하는 경우)

매크로 전처리기 - $( 상속됨)

기타 링커 플래그 - objc, -lc++, $( 상속됨)

아키텍처만 빌드

디버그 - 예

릴리스 - 아니요

검색 경로

프레임워크 검색 경로 - $( 상속됨) $(PROJECT_DIR)

라이브러리 검색 경로 - $( 상속됨)

헤더 검색 경로 - $( 상속됨)

Pods 프로젝트의 iOS 배포 목표가 프로젝트 자체보다 낮았기 때문입니다.일단 제 프로젝트와 동일하게 만들자 헤더 파일을 찾을 수 있었습니다.

"Pod 설치" 또는 "Pod 업데이트" 후 빌드 오류가 발생한 경우, 이전 버전을 사용하는 동안 포드 중 하나가 XCode 6.3으로 빌드되었을 수 있습니다.

저의 경우 Xcode 6.3을 사용하여 문제를 해결하기 위해 OSX를 매버릭스에서 요세미티로 업데이트해야 했습니다.

나에게 문제는 기타 링커 플래그 값에 있었습니다.어떤 이유에서인지 나는 다음과 같은 깃발에 인용문이 없었습니다.-l"xml2" -l"Pods-MBProgressHUD".

git hub에서 zip을 다운로드하고 Pod/...의 해당 경로에서 누락된 파일을 Finder로 끌어와야 했습니다.

Pods 프로젝트를 선택하고, Pod 프로젝트의 대상 디렉터리에서 헤더가 누락된 대상 프레임워크를 찾아 선택하고, 대상 빌드 설정의 "Architectures"에서 "Build Active Architecture Only"를 "No"로 설정했습니다.

저도 같은 문제가 발생했지만 위의 해결책이 작동하지 않습니다.다음을 수행하여 수정했습니다.

  1. 전체 프로젝트 제거
  2. 프로젝트를 실행하고 번들 Exec 포드 설치 실행
  3. cd peoject를 실행하고 remote add upstream your-remote-rep-add
  4. git fetch upstream
  5. git 체크아웃 마스터
  6. git merge 업스트림/마스터

그리고는 효과가 있습니다.

저는 Xcode 5.0의 GM 시드에 있었고, 이 답변들 중 어떤 것도 일할 수 없었습니다.저는 코코포드를 사용한 헤더 Import에 대한 여러 가지 다른 질문에 대해 SO에 대한 모든 답변을 시도했습니다.

마침내 저에게 맞는 솔루션을 찾았습니다. 맥 앱스토어(GM 시드 위에 설치됨)를 통해 Xcode 5.0으로 업그레이드했고 이제 헤더 가져오기가 예상대로 작동합니다.

제 시스템에 Xcode 5 베타 버전이 남아 있어서 그것도 삭제했습니다.아마도 그것은 두 가지의 조합이었지만, 바라건대 이것이 다른 누군가에게 도움이 되기를 바랍니다.

이것이 저를 위한 답이었고, 저는 코코팟을 업데이트했고, 그것이 포드_HEADERS_SEARCH_PATH를 사라지게 했다고 생각합니다.솔루션은 이와 유사했지만 "$(PODS_ROOT)/헤더" – Andrew Aitken을 사용했습니다.

이 답변 정말 감사합니다.저는 제 문제를 해결할 방법을 찾는데 어려움을 겪었습니다.정말 감사합니다.

어떤 답변도 도움이 되지 않았습니다(모든 대상에 연결된 포드, 빌드 구성을 올바르게 설정하고 검색 경로를 "$(상속)"로 올바르게 설정하는 등).

표준 install/update 명령을 사용하여 cocoapod를 최신 디버그 버전으로 업데이트한 후 문제가 저절로 사라졌습니다.

   gem install cocoapods --pre

또는:

   sudo gem install cocoapods --pre

(설치 중에 sudo를 사용한 경우).

그것은 코코파드 벌레임에 틀림없습니다.

한 가지 간단한 해결 방법은 다음과 같습니다. 1.Pods 폴더 및 Podfile.lock 파일을 삭제합니다.하지만 Podfile 2는 삭제하지 마세요.프로젝트 루트 폴더에서 다음 명령을 실행합니다.

pod install

또 다른 이유가 있습니다.모든 헤더 경로가 정상인 것 같았지만, 포드 헤더를 읽으려고 시도하는 사전 컴파일된(.pch) 파일에서 오류가 발생했습니다.

(즉, #import <코코아 럼버잭/코코아 럼버잭.).

원시 빌드 출력을 보면 오류가 빌드 중인 주요 대상이 아닌 Watch OS 확장 대상을 깨뜨리고 있다는 것을 알게 되었습니다. .pch 사전 컴파일된 헤더 파일을 Watch OS 대상으로 가져오다가 실패했기 때문입니다.함께 제공되는 Watch OS 대상 설정이 .pch 파일을 가져오려고 하지 않는지 확인합니다(특히 저처럼 마스터 대상 설정에서 가져오기를 설정한 경우!).

라이브러리를 포드 설치로 포함하는 것이 동적 라이브러리에 직접적으로 도움이 된다는 것을 알게 되었습니다.예를 들어 Firebase의 경우:

pod 'RNFirebase', :path => 'path/to/node_modules/react-native-firebase/ios'

또는 ASLogger의 경우:

pod 'ASLogger', :path => 'path/to/node_modules/aslogger/ios' // path to header files

또는 변경또하드코딩는▁changingHEADER_SEARCH_PATHS도움이 되지 않았습니다.오류가 다시 발생하면 다음 작업을 수행할 필요가 없습니다.rm -rf node_modules포드 파일 등을 삭제하거나 캐시를 지우는 것이 유용하다는 것을 알게 되었습니다.

리액트 네이티브를 위해, 나는 실행합니다.

    rm -rf $TMPDIR/react-native-packager-cache-*
    rm -rf $TMPDIR/metro-bundler-cache-*
    rm -rf $TMPDIR/metro-* 
    rm -rf $TMPDIR/react-* 
    rm -rf $TMPDIR/haste-*
    rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
    npm start -- --reset-cache

의 경우 Xcode의 합니다.~/Library/Developer/Xcode/DerivedData

은 제생각궁해결은으로 가는 합니다.Build settings -> Search Path -> User Header Search Paths라이브러리 경로를 찾아 Finder에서 검색합니다.가져오기 경로를 포함한 모든 경로가 존재하는지 확인합니다.

저에게 제 길은 튜토리얼보다 짧았습니다.튜토리얼에서 그것은 다음과 같았습니다.#import <SDK/path/to/sdk/File.h>하지만 알고 보니 그냥#import <SDK/File.h>

Xcode 12 이상을 사용하는 경우 올바른 아키텍처(Intel 대 ARM)에 맞게 Pod가 컴파일되었는지 확인합니다.다음이 있는지 확인합니다.VALID_ARCHS또는EXCLUDED_ARCHS어디든 설정할 수 있습니다.

나는 가지고 있었습니다config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'내 포드 파일에서 컴파일러가 포드 헤더 파일을 찾지 못했습니다.

대상에 대해 이 행에 대해 의견을 제시해 보십시오.

#  use_frameworks!

또는 xcode에 유닛 테스트 대상을 추가한 다른 답변을 참조할 수 있습니다. 브리징 헤더를 가져오지 못했습니다.

저는 Xcode 8.2.1에 대한 이 문제를 제가 사용하고자 하는 드래그 앤 드롭 프레임워크로 해결했습니다.

여기 다른 해결책이 있어요

  1. Xcode 종료
  2. Xcode 열기 및 프로젝트 정리
  3. 먼저 포드 프로젝트 빌드
  4. 프로젝트 빌드

언급URL : https://stackoverflow.com/questions/12002905/ios-build-fails-with-cocoapods-cannot-find-header-files

반응형