2014-12-15 9 views
7

우리 조직의 여러 iOS 프로젝트에서 사용할 공동 유틸리티 공유 세트에 대한 프레임 워크를 작성해야한다는 요구 사항이 있습니다. 유틸리티 클래스는 신속하게 작성되며 프레임 워크는 iOS 7 이상의 프로젝트를 지원해야합니다. Xcode 6.1.1을 사용하고 있습니다.iOS 7 이상을 지원하는 신속한 프로젝트를위한 프레임 워크를 만드는 방법은 무엇입니까?

'코코아 터치 프레임 워크'와 '코코아 터치 정적 라이브러리'를 모두 만들려고했는데 iOS 7 빌드에서 작동하지 않는 것 같습니다.

'Cocoa Touch Framework'를 사용하면 '임베디드 dylibs/프레임 워크는 iOS 8 이상에서만 실행됩니다.'라는 경고 메시지가 나타나며 실행할 수는 있지만 iTunesconnect 단계에서 프로젝트의 배포 대상은 8.0 이상이어야합니다 (광산은 7.0 임).

http://www.raywenderlich.com/65964/create-a-framework-for-ios에 주어진 단계를 사용하여 'Cocoa Touch Static Library'를 시도했지만 신속한 파일로 빌드하지 않았습니다. 모든 신속한 파일을 제거하고 Obj-C 파일을 추가하면 제대로 작동합니다.

도움을 주시면 대단히 감사하겠습니다. iOS 7 이상을 지원하는 신속한 프로젝트를위한 프레임 워크는 어떻게 만듭니 까?

감사합니다.

답변

8

불행히도, 할 수 없습니다. 스위프트에 대해 더 실망스러운 요소 중 하나입니다.

documentation에서 볼 수 있듯이 신속하고 동적 인 라이브러리가있는 정적 프레임 워크/라이브러리는 iOS 8 이상에서만 지원됩니다.

내가 추천하는 유일한 방법은 iOS 7 용 Objective-C 정적 프레임 워크를 개발 한 다음 iOS 7 지원을 중단 할 때 신속하게 사용하는 것입니다. 가장 이상적인 상황은 아니지만 동적 프레임 워크에서 mixed languages을 가질 수 있기 때문에 코드를 다시 작성하는 데 시간을 낭비 할 필요가 없습니다 (물론 원하는 경우 제외).

+0

설명서에서 iOS 8보다 낮은 프레임 워크를 생성하기 위해 Swift를 사용할 수 없다는 점을 지적 할 수 있습니까? 나는 당신의 대답에 자신감을 가지고 있지만, 나는 의뢰인에게 가져 가야 할 형식이 필요합니다. –

6

iOS 8 이전의 순수 스위프트 프레임 워크를 지원하지 않는 Apple의 경우 다소 빠른 속도의 채택율.

나는 다음과 같은 해결책을 모범 사례로 삼고있다. 솔직히 말해서, 그것은 매우 결함이있는 해킹입니다. 우리는 작업 현장에서 많은 것을 수행하는 대규모 순수 Swift 프레임 워크를 보유하고 있습니다. 그리고 iOS 7.1 이상에서 실행되는 제품의 프레임 워크가 필요했습니다.

여기 해킹이 있습니다. 디렉토리 계층 구조가 중요합니다. 이상적인 상황에서 프로젝트와 프레임 워크는 디렉토리 트리의 형제입니다. 프로젝트에서 그룹을 만듭니다. Finder에서 shift/command는 프레임 워크에서 모든 소스 파일을 선택하고 새로 만든 그룹에 드롭합니다. 파일을 복사하지 않도록하십시오. 프로젝트 파일에 파일을 추가하고 상대 경로 링크를 생성하기 만하면됩니다.

이제 프레임 워크가 프로젝트로 직접 컴파일됩니다. 이 솔루션이 얼마나 취약한 지 충분히 강조 할 수는 없습니다. 파일이 프레임 워크에 추가 될 때 프레임 워크를 "링크 임베드"한 모든 프로젝트에 파일을 추가/링크해야합니다.

이 "솔루션"은 최후의 수단으로 사용해야합니다. 여러 프로젝트에서 프레임 워크 패리티를 반복해야한다는 것은 어리 석다. 프로젝트가 정적 인 채로 시간이 지나고 프레임 워크가 발전하면 프레임 워크를 프로젝트에 덤핑하고 다시 추가하십시오. 프레임 워크를 덤프/다시 추가하는 데 1 분 미만의 시간이 소요되고 오류가 발생할 가능성이 줄어 듭니다.

Apple, 최선을 다 할 수 있도록 도와주세요.나는이 솔루션을 공유하기 위해 당황 스럽다. 단지 끔찍한 애플을 해결할 방법이다.

+2

가끔은 할 일을해야합니다. – jamylak