[Xcode] KakaoMap 및 로제타 설정에 관한 고찰

유경박·2023년 9월 17일
0
post-thumbnail

개인 프로젝트를 진행중 카카오맵 SDK를 연동시 아래와 같은 오류가 발생했다.

*참고로 글쓴이의 개발 환경은 아래와 같다.
노트북 : M2 Air 16GB
개발 IDE 및 버전 : Xcode 14.3
빌드 환경 : arm64(default)

In DaumMap.framework/DaumMap(HashUtils.o), building for iOS Simulator, but linking in object file built for iOS, file 'DaumMap.framework/DaumMap' for architecture arm64

  • 위의 문제는 모듈간 링킹하는데 발생하는 문제로써, 이렇게 나오면 사실상 해결할수있는 방법은 빌드 아키텍쳐 수정, 브릿징 헤더 경로 추적, XCode 버전 등 복잡해진다
  • 카카오맵의 경우 SPM, CocoaPods, Carthage 등 패키지 설치 지원을 안하기때문에 수동으로 해야하고 Kakao맵의 경우 Objective-C 기반으로 실행되기에 추가작인 브릿징헤더, Objective ARC 등 추가작업을 해줘야한다.)

특히, 공식문서에서도 이와 관련된 내용은 나와있지 않으며 공식포럼에서조차 질답게시판에 몇개 올라왔지만 해당 답변이 달려있지 않고 오히려 사용자들이 답변을 주는 사례가 더많아 보였다.(관리 잘 안하는듯 하다 --;)

미리 결과를 말하자면, 다행히, 카카오맵의 경우 로제타를 이용하여 카카오맵 빌드시 큰 문제없이 해결이 가능하다.
따라서, 14버전 이상일때 어떻게 설정하는지 보자
(구버전(약 13버전 이하)의 경우 로제타 변경에 관한 블로그 글들이 많이 있음으로 생략)

설정방법

1)Terminal을 이용하여 sudo softwareupdate --install-rosetta를 이용하여 로제타 설치

2) Xcode실행 - Product - Destination - Destination Architecture를 누르면 바로 변경하여 에뮬레이터의 빌드 환경을 변경

(다만, Rosetta 에뮬레이터로 실행시 렌더링쪽에 문제가 발생하는지 알수없는 렉이며, 터치가 씹히는 현상 등 문제가 발생한다. 따라서 본인은 네이버맵으로 변경.. )

어쨌든 본글의 목적은 간혹 카카오맵처럼 objective-c의 헤더파일을 이용하여 native 코드까지 연동할때 링킹에러가 발생했을 때 대처방안 중 하나로써 링킹에러를 해결하는 방법에 대해 작성하였으며, C/C++의 경우는 32/64비트 모듈간 호환성이 안맞아서 빌드에러 나는경우는 종종봤어도 빌드 아키텍쳐 종류에 따라 안되는건 또 새로운 느낌으로 배운것 같다.

profile
으아아

0개의 댓글