[swift] 앱 확장과 함께 Cocoapods 사용

cocoapods 라이브러리를 사용하는 Xcode 6 Beta-6에서 사진 앱 확장을 빌드하려고합니다. Xcode가 사진 확장을 위해 생성하는 브리징 헤더는 cocoapods에서 아무것도 볼 수 없습니다.

예 : #import <GPUImage/GPUImage.h>오류가 발생 "GPUImage/GPUImage.h" file not found합니다.

나는 수입에 대해 생각할 수있는 모든 경로 (괄호와 따옴표 포함)를 시도했지만 거의 성공하지 못했습니다. 예외는 SVProgressHUD다음과 같은 끔찍한 끔찍한 해킹이 작동
한다는 것입니다 #import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h".

그러나 GPUImage의 경우 GPUImage.h헤더 로 들어가서 GPUImageContext.h앱 확장의 일부가 아닌 일반 신속한 코드에 대한 브리징 헤더로 가져올 때 문제가 없음에도 불구하고 갑자기 볼 수 없다고 결정합니다 .

브리징 헤더가 제대로 작동하지 못하게하는 앱 확장 컴파일의 차이점은 무엇입니까?

참고 : 이 튜토리얼 의 가능한 모든 순열을 읽었 으며 누군가가 답을 찾았다 고 생각하는 경우를 대비하여 즉시 적용 할 수는 없습니다.

또한 이 SO 질문에 설명 된 문제는 관련 있을 수 있지만 내 문제가 앱 확장과 관련된 경우 어쨌든이 질문을했습니다.



답변

이를 수행하는 적절한 방법은 podfile을 업데이트하여 한 줄만 추가하는 것입니다.

link_with 'yourApp', 'yourAppExtension'

포드 업데이트로 문제가 해결됩니다.


답변

수정 (2015/03/10)

새로운 수락 답변을 참조하십시오. 내 테스트 포드가 모두 확장에서 허용되지 않는 sharedApplication을 사용했지만 새 프로젝트에서 시도해 보았지만 작동했습니다. 그들이 그러한 오류를 보여 주었다는 사실은 그것이 제대로 연결되었음을 의미합니다. @LeChatNoir로 이동합니다!


성공.

이 솔루션은 다음과 같습니다 : 당신은 당신의 앱 확장을하고 cocoapods를 사용하여 프로젝트에 헤더를 브리징 그리고 당신이 좋아하는 포드 포함하도록 노력하고, 그 cocoapods 라이브러리 중 하나를 사용하고자하면 #import <GPUImage/GPUImage.h>실패 할 것이다 file not found.

먼저 앱 확장 (프로젝트 파일을 클릭 한 다음 확장 대상을 클릭)에 libPods.a앱 대상과 마찬가지로 에 연결하도록 지시 해야합니다.

다음으로, Info 탭 아래의 실제 프로젝트 (프로젝트 파일을 클릭 한 다음 내부 사이드 바의 “Project”섹션에서 프로젝트 파일을 다시 클릭)에서 사용할 Debug, Release 및 Inhouse의 확장 구성을 설정합니다. 드롭 다운에서 “포드”구성. Pod 설치는이 작업을 수행하지 않으므로 직접 수행해야합니다.

마지막으로 Pods 프로젝트의 대상과 프로젝트의 대상이 모두 Valid Architectures 변수에서 빌드하는 데 필요한 모든 아키텍처를 가지고 있는지 확인하십시오. 그렇지 않으면 항상 재미있는 정의되지 않은 기호 오류가 발생합니다.

이렇게 하면 정상적으로 선택한 포드를 가져올 수 있습니다.


편집 (2014/10/14) : 옆으로 Swift 확장의 프로젝트 코드 내에서 Objective-C 파일을 포함 할 수도 있으므로 .m브리징 헤더에 넣은 모든 파일도 컴파일 되었는지 확인해야합니다. 확장 대상에 의해. .mXcode의 오른쪽 사이드 바에있는 “Target Membership”섹션을 사용하여 타겟에 대한 소스 컴파일 메뉴 또는 파일 자체 에서이 작업을 수행 할 수 있습니다 .


답변

위의 답변은 작동하지만 내 확장 프로그램에 몇 개의 pod 만 필요했기 때문에 Podfile에 다음을 수행했습니다.

target '[Main App Target Name]' do
        pod ...
        pod ...
        pod ...
end

target '[Extension Target Name]' do
        pod ...
end

그리고 pod install의지가 그것을합니다!


답변

여기에 이미지 설명 입력

link_with, 더 이상 사용하지 않습니다.

유효하지 않은 Podfile파일 : [!] link_withPodfile의의 사양이 지원되지 않습니다. 대신 대상 블록을 사용하십시오.

아래는 테스트 된 완벽한 answe입니다.

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, ‘9.0’
use_frameworks!
inhibit_all_warnings!

target 'DemoTodayWidget' do
    pod 'Reachability',                         '~> 3.2'
end

target 'My Widget' do
    pod 'Reachability',                         '~> 3.2'
end


답변