2013-04-16 2 views
14

, 나는 기본적으로 항목이 있습니다Cocoapods는 iOS 용 내 cocoapod에서

  1. 오픈 소스 클래스 (하는 .m & .H 파일)
  2. MyFramework.framework을 (.framework 디렉토리 , 헤더 파일 및 .bundle)

오픈 소스 클래스 중 하나는 import <MyFramework.MyFramework.h>을 호출하므로 구현시 MyFramework의 구성 요소를 사용할 수 있습니다. 하지만이 때문에, podspec이 spec lint 테스트 (pod spec lint MyCocoapod.podspec)를 통과하는 데 문제가 있습니다. 나는 사양 보풀 유효성 검사를 실행하면 말한다 :

ERROR | [iOS] [xcodebuild] .../MyFile.h:54:9: fatal error: 'MyFramework/MyFramework.h' file not found

조사하는 동안, 나는 내가 제거하면 podspec이 사양 보풀 유효성 검사를 통과 않는 것으로 나타났습니다 그 podspec의 source_files 섹션, s.source_files = 'MyFiles.{h,m}'에서 오픈 소스 클래스. spec lint 유효성 검사 중에 내 클래스가 내 사용자 지정 프레임 워크를 가져올 수없는 이유는 무엇입니까?

podspec에서 관련 코드는 다음과 같습니다

s.preserve_paths  = 'myframework/MyFramework.framework' 
s.frameworks   = 'Foundation', 'MyFramework' 
s.xcconfig   = { 'FRAMEWORK_SEARCH_PATHS' => '$(SRCROOT)/myframework/' } 
s.public_header_files = 'MyFramework.framework/Headers/*.h', 'SourceCode/*.h' 
s.source_files  = 'SourceCode/*.{h,m}' # Crashes here - Source_file imports MyFramework.h. If I take this out, it passes spec lint validation 

답변

21

편집이 과정은 이제 완전히 vendored_frameworks 옵션으로 처리됩니다. 이렇게하면 경로 보존, 프레임 워크 검색 경로 및 프로젝트 링크가 처리됩니다.

s.vendored_frameworks = 'path/to/SomeFramework.framework'

가 번들 파일이 할 포함 : 답장을 보내

s.resources ='path/to/SomeBundle.bundle'

+1

감사 – johngraham

+0

'source_files'를 podspec에 추가하면 프레임 워크 가져 오기에 영향을주지 않습니다. 보푸라기에 코코아 패드가 표시하는 오류는 무엇입니까? (또한 최신 버전'gem update'를 사용하고 있는지 확인하십시오.) –

+0

흠, 위의 오류는 질문란에서 ... 'ERROR | ...'입니다. (방금 내 podspec에서 관련 코드를 추가했습니다.) 아마도 프레임 워크를 제대로 가져 오지 못하고 있는데, source_files가 프레임 워크를 제대로 가져올 수없는 이유입니다. 나는 이것을 조사하고 당신에게 돌아올 것입니다. – johngraham

4

은 당신이 사용할 수있는 프레임 워크를 포함합니다. 그래서 제 코코아포드가 ** 프레임 워크 일 뿐이라면, 이것은 효과가 있습니다. 그러나 포드에는 배포 할 source_code (.m & .h 파일)도 있습니다. my pod의 source_code (.m) 내에서`#import '가 발생하고 이것이 lint 스펙이 유효성 검사를 실패하는 곳입니다.