최근에 회사작업을 하면서 외부 업체의 프레임워크를 앱에 넣어야 하는 일이 생겼습니다.
원래 실 디바이스를 물려서 작업하지만 그렇다보니 책상도 지저분해지고 그래서 시뮬레이터로 작업하는 일이 많아졌습니다.
근데 갑자기 빌드가 안되더라구요..
잉? 이러면서 실 디바이스를 물려서 해보니 빌드는 잘되고..
그래서 에러 로그를 보니 외부업체의 프레임워크가 어떠한 아키텍쳐에 대해 빌드되지 않도록 되어있다는 것 입니다.
나는 그냥 받아서 쓴 것 뿐인데..
구글에 열라게 검색해보니 우선 아키텍쳐를 확인해 보라는 겁니다.
아키텍쳐에 대해 우선 참고 글을 남깁니다. (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를 선택한 후 방금 작성한 부분만 지웁니다.
끝입니다..
이외에도 다양한 옵션이 있으니 빌드 셋팅을 변경할수도 있습니다.
'개발' 카테고리의 다른 글
WWDC 19 (0) | 2019.07.19 |
---|---|
빠르게 레이아웃 깨지는 이슈를 파악하는 방법 (5) | 2019.07.19 |
Apple IAP 도중 유저에게 결제 합산 청구되는 이슈 (0) | 2019.02.28 |
iOS 앱내구매 차단 설정 변경 방법 (0) | 2019.01.11 |
UISearchBar의 요상한 버그(feat ScopeBar) (0) | 2018.11.13 |
댓글