Fat Framework 만들기

이번에는 저번 포스팅에 이어서 Fat Framework를 만드는 법을 소개하겠습니다. 프레임워크가 시뮬레이터, 실물 기기에서 모두 동작하기 위해서 x86_64, i386, ARM64, ARMv7 등의 아키텍쳐를 모두 지원하는 프레임워크를 만들어야 합니다. 앱스토어에 배포하기 위해서는 시뮬레이터 아키텍쳐를 반드시 지원하지 않아도 되지만 테스트할 때 다양한 기기를 보유하지 않다면 불편한 점이 많습니다.


Fat Framework로 만들 예제 프레임워크로 SDWebImage 프레임워크를 사용하겠습니다. 일단 기본적으로 Fat Framework는 lipo 명령어로 만들 수 있습니다.

각각의 아키텍쳐로 빌드 후 lipo 명령어를 이용하여 하나의 Fat Framework 를 생성하면 됩니다. 따로 빌드하고 명령어 치는게 귀찮다면 아래와 같이 타겟을 하나 더 추가하여 스크립트를 작성하여 빌드하면 됩니다.


Aggregate Target 추가

먼저 Xcode로 해당 프로젝트를 열어줍니다. Fat Framework를 만들기 위해서 새로운 타겟을 만듭니다. 프로젝트 파일을 선택하고 왼쪽 하단에 + 버튼을 눌러서 Target 추가를 해줍니다.


Cross-platform 탭으로 가면 Other 메뉴에 Aggregate가 있습니다. 선택하고 Next를 눌러주세요. 타겟이름은 UniversalFramework로 했습니다.


왼쪽 상단에 + 버튼을 누르면 Script를 추가할 수 있는 버튼이 있습니다. New Run Script Phase를 선택해줍니다.


그리고 스크립트 창에 아래의 스크립트를 복사하여 붙여넣기 해줍니다.

여기서 SCHEME_NAME은 빌드하고자 하는 프레임워크 타겟의 이름입니다. SDWebImage iOS는 중간에 띄어쓰기가 들어가서 자꾸 에러를 뱉어내서 해당 타겟을 복사하여 이름만 SDWebImage로 변경하였습니다. 빌드하고자 하는 타겟의 이름을 적어주면 됩니다.

출처 : https://medium.com/@syshen/create-an-ios-universal-framework-148eb130a46c


빌드할 수 있도록 새로운 scheme을 추가해줍니다. 왼쪽 상단 Stop 버튼 오른쪽 프로젝트 이름을 선택하고 Manage schemes ... 를 눌러줍니다.

+ 버튼을 누르면 방금 추가한 타켓이 입력되어 있습니다. 그냥 OK눌러줍니다.


shared 체크박스를 체크해주고 닫아줍니다.


이제 새로운 타겟이 성공적으로 추가되었습니다.


Fat framework 빌드하기

혹시 i386, x86_64를 시뮬레이터를 모두 지원하기 위해서는 빌드하기 전에 한가지 더 세팅합니다. 기본 Build configuration이 debug로 세팅되어 있는데 release로 세팅해줍니다.

아까 scheme추가 한 곳 메뉴 상단에 Edit Scheme..을 눌러줍니다.


Build Configuration이 Debug로 세팅되어 있는데 Release로 변경해주고 빌드해줍니다.


Fat Framework로 빌드된 프레임워크를 확인합니다. 오른쪽 클릭 후 Show in finder를 하면 해당 경로로 이동할 수 있습니다.


file 명령어로 확인해보니 i386, x86_64, armv7, arm64를 지원하는 프레임워크가 생성되었습니다.




'개발 > iOS' 카테고리의 다른 글

UIScrollView에서 Autolayout 적용하기  (1) 2017.11.21
Fat Framework 만들기  (0) 2017.11.17
Symbol(s) not found for architecture x86_64 에러  (0) 2017.11.15

+ Recent posts