나는 여기에 2 센트를 더 무서워하지 않을 것입니다 :-). Frameworks
애플이 문서화 한 디렉토리 에 추가하여 정상적인 방식으로 작동하지 않는 공급 업체의 뚱뚱한 라이브러리가 많이 있습니다. 우리가 그것들을 작동시킬 수있는 유일한 방법 .framekwork
은 프로젝트 디렉토리로 권한을 가져 Embedded Frameworks
오고 Link Binary with Libraries
빌드 설정에서 수동으로 링크하는 것 입니다. 그러나 이것은 지방 라이브러리와 마찬가지로 외부 시뮬레이터 아키텍처 i386
와 x86_64
함께 아키텍처 와 함께 제공 되므로 문제없이 작동하는 것으로 보입니다 arm
.
팻 라이브러리에서 아키텍처를 확인하는 빠른 방법은
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
다음과 같은 출력을 뱉어야합니다.
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
이는 iTunesConnect Archival 업로드 전에 프레임 워크에서 "지방을 트리밍"(즉 i386
, & x86_64
) 해야한다는 것을 확인합니다. 이 아키텍처는 허용되지 않습니다 (iOS에서는 지원되지 않으므로).
자, 여기에있는 모든 대답 (또는 최소한의 대답 중 적어도)은 프레임 워크가 Frameworks
디렉토리 에있는 경우에만 실제로 잘 작동하는 훌륭한 실행 스크립트를 제공합니다 . 쉘 스크립트 중독자가 아닌 한, 수정하지 않은 스크립트는 위에서 설명한 시나리오에서 작동하지 않습니다. 그러나 프레임 워크에서 i386
& x86_64
아키텍처를 제거하는 매우 간단한 방법이 있습니다.
프로젝트 디렉토리에서 터미널을 엽니 다.
직접으로 변경 디렉토리 .framekwork
처럼,
cd YourProjectDir/YourProject/YourLibrary.framework
아래와 같이 일련의 명령을 실행하십시오.
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
여기서주의해야 할 사항 lipo -remove
은 각 아키텍처를 제거 할 때마다 한 번씩 수행해야합니다. lipo
입력 파일을 수정하지 않고 파일 만 생성하므로 and에 lipo -remove
대해 한 번만 실행해야합니다 . 위의 명령은 먼저 실행 파일의 이름을 바꾸고 원하는 아치를 제거한 다음 남은 파일을 정리하여 간단히 수행합니다. 이제 응용 프로그램 로더 보관 파일에 iTunesConnect로 업로드 할 때 녹색 확인 표시가 나타납니다.x86_64
i386
명심해야 할 사항 : .framework
시뮬레이터 아키텍처에서 제거 될 예정 이므로 시뮬레이터 빌드가 작동을 멈 춥니 다 (예상). 개발 환경에서는 .framework
시뮬레이터와 실제 장치 모두에서 테스트 할 수 있기 때문에 파일 에서 아키텍처를 제거 할 필요가 없습니다 . 뚱뚱한 라이브러리 Frameworks
가 프로젝트 의 폴더에 있으면 수락 된 답변을보십시오.