2017-02-01 1 views
2

(프로젝트 1) 하나의 프레임 워크를 다른 프로젝트 (프로젝트 2에서 드래그 드롭)와 마찬가지로 다른 프로젝트에서 사용하고자하는 하나의 프레임 워크를 만듭니다. (프로젝트 2)iOS에서 범용 프레임 워크를 만드는 방법은 무엇입니까?

내 문제

을하지만 난 내 프로젝트 2에서이 프레임 워크를 사용할 때 엑스 코드에서 선택한 유지 장치 (프로젝트 1) 프레임 워크를 만들 때 그렇지 시뮬레이터 장치에만 작동합니다. 그 반대의 경우도 xcode에서 선택된 시뮬레이터를 유지하는 프로젝트 1에서 프레임 워크를 생성하고 프로젝트 2에서이 프레임 워크를 사용하면 시뮬레이터에서만 작동합니다. 이것에 대한

오류가

enter image description here

내가 달성하기 위해 노력하고 무엇

프로젝트에 장치와 시뮬레이터 모두에서 실행해야합니다 프로젝트 1에서 생성 된 내 프레임 워크 (2)

다음 두 프로젝트의 설정입니다.

enter image description here

답변

1

Xcode는 선택한 대상에 따라 프레임 워크를 작성합니다. 프레임 워크가 시뮬레이터 용으로 빌드 된 경우, 아키텍처는 X86_64, i386이고, 반면에 디바이스는 armv7, arm64입니다. 아래와 같이 lipo 명령을 사용하여 프레임 워크의 아키텍처를 확인할 수 있습니다.

lipo -info sample.frameowrk/sample 

이제 프레임 워크에서 시뮬레이터와 장치를 모두 지원해야합니다. 그래서, 당신은 (장치와 시뮬레이터 내장) 모두 프레임 워크를 결합하여 아래와 같이 사러 명령을 사용하여 FAT 프레임 워크를 만들어야합니다

lipo <path to framework build for simulator>/simulator.framework <path to framework build for device>/device.framework -create -output universal.framework 

결과 보편적 인 프레임 워크는 모두 플랫폼을 지원합니다. 다음과 같이 유니버설 프레임 워크가 지원하는 아키텍처를 확인할 수 있습니다.

lipo -info universal.framework/universal 

output : arm64,armv7,x86_64,i386 
+0

안녕 Harish, 여기 파일 1과 파일 2는 무엇을 의미합니까? 이 프레임 워크 이름은 왜 하나의 프레임 워크에 대해 서로 다른 이름을 사용합니까? 제품 폴더에서이 명령을 실행해야합니까? – sss

+0

이것은 올바른 접근법처럼 들리지만 이전에도이 작업을 수행했지만 잊어 버렸습니다. 나는 그가 시뮬레이터와 장치를위한 프로젝트를 컴파일하고 이들로부터 출력 프레임 워크를 얻은 다음 file1 = 시뮬레이터 프레임 워크, file2 = 장치 프레임 워크 등 위의 명령을 실행한다고 생각한다. 존재하는, 다만 그들을 개명하십시오 그래서 사람은 두번째 것을 집계 할 때 무효가된다. – Fonix

+0

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo : 임시 출력 파일을 만들 수 없습니다 : OcrSdk.framework/OcrSdk.lipo (해당 파일이나 디렉토리가 없습니다.). 왜 출력물을 만들 수 없습니까? – sss

관련 문제