본문 바로가기
개발

iOS에 특정 프레임워크, 라이브러리가 빌드 되지 않도록 하는 법

by 꼬마상어 2019. 4. 19.
반응형

최근에 회사작업을 하면서 외부 업체의 프레임워크를 앱에 넣어야 하는 일이 생겼습니다.

원래 실 디바이스를 물려서 작업하지만 그렇다보니 책상도 지저분해지고 그래서 시뮬레이터로 작업하는 일이 많아졌습니다.

근데 갑자기 빌드가 안되더라구요..

잉? 이러면서 실 디바이스를 물려서 해보니 빌드는 잘되고..

그래서 에러 로그를 보니 외부업체의 프레임워크가 어떠한 아키텍쳐에 대해 빌드되지 않도록 되어있다는 것 입니다.

나는 그냥 받아서 쓴 것 뿐인데..

구글에 열라게 검색해보니 우선 아키텍쳐를 확인해 보라는 겁니다.

아키텍쳐에 대해 우선 참고 글을 남깁니다. (http://kyejusung.com/2015/10/armv7s-armv7-arm64%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90/)

---결론---

  • ARMv7 : iPhone 3GS, iPad(2010), iPhone 4, iPod touch, iPad2, iPhone 4S, (new)iPad, iPad mini
  • ARMv7s : iPhone 5, iPad(2012), iPhone 5c
  • ARM64 : iPhone 5S, iPad Air, iPad mini 2, iPhone 6, iPhone 6 plus, iPad Air 2, iPad mini3
  • i386, x86_64 : simulator

시뮬레이터에서 빌드되려면 프로젝트에 들어가있는 프레임워크, 라이브러리가 i386, x86_64 아키텍쳐를 지원하는 Fat Framework(= Univalsal Framework)여아 합니다.

해당 프레임워크가 어떤 아키텍쳐를 지원하는지 알아봅시다.

  1. 터미널을 연다.

  2. 프레임워크가 있는 경로로 간다. 

저는 예시로 Bolts.framework로 보겠습니다.

3. 그리고 그 프레임워크 안으로 들어갑니다. 

햇갈리실것같아 스크린샷 첨부합니다.

[이름].framework 내부로 이동하여 [이름]으로 되어있는 파일이 있습니다.

그파일의 정보를 볼 수 있도록 file [이름]을 입력하면 어떤 아키텍쳐에서 동작할 수 있는지 확인 할 수 있습니다.

Bolts는 4개의 아키텍쳐에 사용할 수 있도록 빌드되었군요!

 

아쉽지만 제가 전달받은 프레임워크는  armv7, arm64 아키텍쳐만 지원되도록 빌드되었고, 보안상의 이유로 시뮬레이터에서는 빌드 될 수 없었습니다.

하지만 아키텍쳐만 지원될 수 있도록 요청할 수 있다면 만드는 방법은 링크를 걸어놓도록 하겠습니다! (사실 이게 제일 좋은 방법이죠)

https://medium.com/swiftindia/build-a-custom-universal-framework-on-ios-swift-549c084de7c8

하지만 우리는 다양한 기기가 모두 존재하지않기때문에 해당프레임워크만 제외하고 다른것만이라도 시뮬레이터에서 확인을 해야합니다.

------

1.  원하는 프로젝트 타겟에 들어가 Link Binary With Libraries에 들어갑니다.

원하는 프레임워크를 추가하고 Status를 Optional로 변경합니다.

 

2. Build Settings의 설정 변경

Build Settings -> OtherLinker Flags에 들어갑니다.

디버그에 더블클릭해서 하단에 항목을 추가합니다.

이때 라이브러리라면 -l[라이브러리이름] 이렇게 작성하고

프레임워크라면 -framework, [프레임워크이름] 이렇게 작성합니다.

그리고 디버그 버튼 옆에 플러스를 눌러 Any iOS Simulator SDK를 선택한 후 방금 작성한 부분만 지웁니다.

끝입니다..

이외에도 다양한 옵션이 있으니 빌드 셋팅을 변경할수도 있습니다.

 

반응형

댓글