2016-08-11 8 views
1

프레임 워크를 만들 때 해당 프레임 워크에서 셸 스크립트를 작성할 수있는 집계 대상을 사용하여 스크립트 기반의 시뮬레이터와 장치 용 프레임 워크를 빌드했습니다. 모든 프로젝트에서 가져올 수있는 실행 가능한 프레임 워크를 갖게되고 그 프레임 워크의 클래스와 메소드를 사용할 수 있습니다.iOS 장치 및 모든 시뮬레이터 아키텍처를 모두 지원하는 정적 프레임 워크 용 집계 스크립트

하지만 문제는 "스키마 장치"로 실행 가능한 프레임 워크를 만들 때 모든 장치에서 실행할 수 있지만 특정 iOS5/iOS6 시뮬레이터를 사용하여 빌드하면 클라이언트에서 선택된 iOS5/iOS6 시뮬레이터 만 실행된다는 것입니다. 계획.

iOS5 시뮬레이터를 사용하여 프레임 워크 빌드를 작성한 경우 클라이언트 프로젝트에서 해당 프레임 워크를 실행하고 iOS6 시뮬레이터를 사용하면 아키텍처 x86_64에 대해 정의되지 않은 기호를 제공합니다.

아키텍처 i386 및 x86_64를 모두 지원하는 쉘 스크립트가 필요하다는 것은 클라이언트 프로젝트의 모든 장치 및 모든 시뮬레이터에서 내 프레임 워크가 실행 가능해야 함을 의미합니다.

이것에 대한 통찰력은 정말 도움이 될 것입니다.

+0

도움을 주시면 감사하겠습니다. –

답변

0

집계 목표를 작성하고 빌드 페이즈 내부 -> 실행 스크립트 쓰기 스크립트 :

빌드 2 별도의 프레임 워크 : 모바일 기기 (하는 ARMv7, arm64 등) 2. 프레임 워크 아키텍처와 1. 프레임 워크 시뮬레이터 용 아키텍처 (i386 및 x86_64). 예를 들어

:

xcodebuild -workspace MyApp.xcworkspace -scheme MyFrameworkScheme -arch i386 -arch x86_64 ONLY_ACTIVE_ARCH=NO -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator BUILD_DIR=${BUILD_DIR} 

xcodebuild -workspace MyApp.xcworkspace -scheme MyFrameworkScheme -arch armv7 -arch armv7s -arch arm64 ONLY_ACTIVE_ARCH=NO -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos BUILD_DIR=${BUILD_DIR} 

그런 다음, 지방 라이브러리에 두 프레임 워크 내부의 라이브러리를 병합 lipo을 사용하고 프레임 워크 내부 중 하나를 교체 => 당신은 지방 프레임 워크를 가지고있다.