iOS가 Xcode 7.2에서 Framework를 만드는 간단한 프로세스

3682 단어
정적 라이브러리와 동적 라이브러리의 차이점:
                  :                  ,     .a   .framework     ,   ,                 ,             ;     .dylib   .framework     ,      ,               ,     ,       ,      ,    ,         。       —Debug(  )  、  —Release(  )  、   —Debug  、   —Release  ;        Release(  )  ,           ,    。

Framework 패키지
1、새 iOS->Framework & Library->Cocoa Touch Framework
2,next를 선택하여 다음 단계로 진입
3. PROJECT->Deployment Target->iOS Deployment Target에서 지원할 최저 시스템을 선택하십시오.
동일 작업은 TARGETS에서 Deployment Info->Deployment Target
4. 제 프레임워크는 iOS7을 지원해야 하기 때문에 2, 3단계에서 해당하는 설정을 했습니다.Build 시 ⦆ld: warning: embedded dylibs/frameworks only run on iOS 8 or later 경고가 나타납니다. 이것은 프로젝트의 기본 컴파일 설정이 Dynamic Framework이기 때문입니다.이 컴파일은 iOS8 이후에만 사용할 수 있습니다.
5. 4단계에서 발생한 문제에 대해 수요에 따라 제 프로젝트는 동적 프레임워크를 사용하지 않고 동적 업데이트 기능을 사용할 필요가 없습니다.동적 라이브러리는 분리해서 발표할 수 있고 실행할 때 메모리를 찾아 저장할 수 있지만 애플은 자신만 사용할 수 있고 iOS8 이후에야 개발자에게 개방된다.따라서 Dynamic Framework를 Static Library 정적 모드로 교체해야 합니다.Build Settings->Linking->Mach-O Type->Static Library로 경로 설정
6. 여기서 주의해야 할 것은 컴파일할 때 그림 파일을 프로젝트에 넣지 말아야 한다. 그렇지 않으면 컴파일한 후 프레임워크에 대량의 흩어진 그림 파일이 나타날 수 있다.이럴 때는 그림 등 자원을 두어야 한다.bundle 파일에서그림의 포장은 두 번째 단계에서 소개한다.
7, 이렇게 포장된 프레임워크는 여전히 문제가 있습니다. 만약에 당신이 Category를 사용한다면 다른 사람들이 당신의 프레임워크를 사용할 때 붕괴가 발생할 수 있습니다.이 때 다른 사람이 인용할 때 프로젝트에서other linker flags에 -objC를 추가해야 합니다. 문제가 있으면 -allload.
8, 마침내 컴파일에 성공했지만 기호표에 대한 경고가 많이 발견되었습니다. 이때Generate Debug Symbols를 NO로 설정하면 기호표 경고를 닫을 수 있습니다.
9. 하지만 비트코드를 지원해야 합니다. 상기 설정 후 프레임워크에서 비트코드를 지원할 수 없기 때문에 비트코드를 지원하도록 추가 명령을 설정해야 합니다.TAGETS의 Build setting에서 Other C Flags를 검색하여 "-fembed-bitcode"명령을 추가합니다.같은 설정이 PROJECT에 있습니다.위와 같은 조작을 하지 않으면다른 사람이 당신의 프레임워크를 집적할 때 컴파일할 수도 있고, 실제 테스트할 수도 있다.유독 포장할 때 경고를 보내고 포장에 실패한다.경고는 프레임워크에서 bitcode를 지원하지 않습니다!
10.SDK든 Framework든 모두 사용자가 읽고 읽을 수 있도록 공공 헤더 파일을 노출해야 한다.TARGETS->Build Phases->Headers에는 세 가지 종류가 있습니다.Public, 다른 사람이 볼 수 있는 헤더를 저장합니다.Private (개인) 여기에 개인 헤더를 저장합니다. 상기 두 개의 헤더스 저장 위치가 모두 드러나 모두가 볼 수 있습니다.어떤 헤더들은 다른 사람에게 보여주고 싶지 않다.이러한 헤더는 세 번째 클래스 프로젝트에 배치됩니다.
11. 포장.Edit Scheme->Build Configuration->Release로 선택하고 Run을 실행하면 됩니다.
버블 파일 패키지
1, 신규 OS X->Framework & Library->Bundle 신규
2. Build Settings->(null)-Deployment->iOS Deployment Target->에서 지원할 최저 시스템을 선택하십시오.
3,build 후 bundle 패키지가 생성되지만 패키지의 그림은 이전의 png 형식에서 모두 tiff 형식으로 바뀝니다.이런 격식의 전환을 방지하기 위해서Build Settings->Architectures->Base SDK->iOS의 SDK가 지원할 버전을 선택해야 합니다.이 때 TARGETS에서 Build Setting->User-Defined에 새로운 Key:COMBINEHIDPI_DEBUG_INFO, NO로 설정합니다.
4, 이렇게 만든 그림 자원은 [UIImage imageNamed:@ "png"]을 사용하여 얻을 수 없습니다.그림을 읽으려면 경로 방식을 사용해야 합니다.
여기에서 나는 경로를 얻기 위해 함수를 사용했다.
NSString *getKaYiKaImageBundlePath(NSString *filename);
NSString *getKaYiKaImageBundlePath(NSString *filename) {
NSBundle *libBundle = [NSBundle bundleWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@”KaYiKa.bundle”]];
if (libBundle && filename) {
NSString *path = [[libBundle resourcePath] stringByAppendingPathComponent:filename];
path = [path stringByAppendingString:@”.png”];
return path;
}
return nil;
}
사용 시 직접 사용
[UIImage imageWithContents Offile: getKaYiKaImageBundlePath(@ "tool return day")] 그림을 가져옵니다.
참조 프로젝트 만들기
인용 프로젝트를 만들 때 프레임워크와 버블을 동시에 가져옵니다.
나머지 사용은 시스템 프레임워크와 같습니다.
공통 동적 라이브러리 만들기
1. 새 Aggregate Target TARGETS – > + 단추 – > Other – > Aggregate – > 두 번 클릭;2. 새 Target에 script를 추가합니다.1단계에서 새로 작성한 Aggregate를 선택하고 왼쪽 위에 있는 + 를 클릭하여 new Run Script Phase를 추가합니다.

좋은 웹페이지 즐겨찾기