Swift기반 실제기기와 시뮬레이터에서 사용가능한 프레임웍 만들기

0

iOS용 Swift언어를 기반으로 하는 프레임웍을 Xcode에서 일반적인 컴파일 설치하려면 완성된 프레임웍은 iOS시뮬레이터용 바이너리(X86 64바이너리)가 포함되지 않는다. 그래서 이번에는 ARM용, x86용 두가지 바이너리를 포함한 유니버셜 바이너리형의 프레임웍을 만드는 방법을 정리해본다.

개발환경

  • Xcode 8 (8A218a)
  • Swift 3.0
  • iOS 10

이전까지 사용하던 방법

  1. ARM용 및 x86용별 각각 프레임웍을 준비
  2. 두 파일 병합
  3. 라이브러리 자체는 lipo명령은 유니버설 바이너리 생성함

Xcode의 Build Setting

iOS용 프레임웍을 위한 프로젝트의 Build Setting은 다음과 같이 설정한다.

  • 카테고리: Architectures (시뮬레이터용 i386, x86_64 추가)
  • 항목명: Valid architectures
  • 설정: arm64 armv7 armv7s i386 x86_64
  • 카테고리: Deployment (프레임웍 설치위치 지정)
  • 항목명: Installation Directory
  • 설정: 프레임웍이 설치된 폴더명
  • 카테고리: Deployment (설치 프로세스 가능)
  • 항목명: Skip Install
  • 설정: NO
  • 카테고리: Search Paths (다른 프레임웍과 연결하는 경우의 설정)
  • 항목명: Framework Search Paths
  • 설정: 참조한 프레임웍 폴더

Install 처리 추가

Install대상추가

Xcode에 프레임웍을 설치하기 위한 대상을 추가한다.

  • 대상 유형은 Cross Platform과 External Build System으로 한다.
  • Build Phases의 Target Dependences에 설치하는 프레임웍 빌드 단계를 지정한다.
  • Info의 External Build Tool Configuration의 Arguments는 -f <Makefile파일명> 으로 한다.

install_ios.mk스크립트

스크립트 내용은 아래와 같다. 스크립트 중 PROJECT_NAME과 INSTALL_PATH는 Canary Framework 설정이다.

참고내용

How to build Cocoa Touch Framework for i386 and x86_64 architecture? 17번 항목의 해결방법을 참고함

 

Facebook Comments

No more articles