EveryDiary App Project - 외부 라이브러리

ulls12·2024년 2월 21일
1

Swift TIL

목록 보기
44/60

프로젝트를 진행하면서 필요한 외부 라이브러리를 써야하는 상황이 왔다.
레이아웃 설정을 편하게 해주기 위한 SnapKit
애니메이션 관련된 아이콘, 이미지들을 지원하는 Lottie
외부에 데이터베이스를 구축하고 데이터들을 저장하게 만드는 firebase
우선은 3가지의 라이브러리를 사용하기로 했다.

SPM(Swift Package Manager) vs CocoaPods

둘 중에 하나를 골라야 한다.

  • 코코아팟의 장점
    코코아팟은 각각의 라이브러리들이 튜닝해놓은 소스들을 구성해놔서, 세팅된 라이브러리를 바로 따와서 적용시킬 수 있다.
    예를 들어, firebase라는 라이브러리는 Realtime을 제공하는 firebase와 Cloud기능을 지원하는 firestore라는 큰 틀의 두가지 기능이 있다. 여기서, SPM은 직접 내가 선택해야하므로 어떤게 필요하고 필요없는지를 직접 찾아봐가면서 구성해줘야하는 반면, 코코아팟은 이미 서비스 중인 회사에서 firebase/firestore 라는 항목으로 필요한 라이브러리들만 주어지도록 제공된다. 간단히 말해 라이브러리 의존성 설정에서 튜닝이 좀 더 자유로운 느낌(?)이다.
  • 코코아팟의 단점
    초기세팅이 너무 어렵고 오래걸린다. 깃허브를 통해 팀원들과 협업하여 프로젝트를 진행하기 위해서는 .gitignore 세팅도 따로 해줘야하고 터미널을 통해서 라이브러리를 직접 다운 받아야한다.
  • SPM의 장점
    Xcode 내에서 관리가 진행되기 때문에, github에서 따로 추가적인 설정이 필요 없다. 또한, Xcode에서 바로 받을 수 있기 때문에, 초기 세팅 시간이 거의 제로에 가깝고 패키지 매니징도 훨씬 수월하다.
  • SPM의 단점
    서비스 된 것이 코코아팟에 비해 최근에 시작했기 때문에, 아직까지 지원하지 않는 라이브러리가 존재한다는 것이다.

SPM 채택

아직 코코아팟에는 익숙하지 않고, 설치를 하지 않은 인원도 존재했다. (나 포함..)
무엇보다도 Xcode 내에서 관리되기 때문에 너무 편리했다. 다만, 문제가 발생했다.

우선 예전 버전과 다르게, 왼쪽에 체크박스를 누르는 기능이 없어졌고 ( 1차 당황 ).
찾아보니 최신 버전부터는 Add to Target에서 None으로 바꿔주면 전 버전처럼 내가 선택한 패키지만 가져올 수 있다.

문제는 스크롤을 내린 후 다시 올리면 None으로 처리했던 항목들이 감쪽같이 풀려져있고, None으로 설정을 해놓고 Add Package버튼을 누르면, None으로 되어있는 항목까지 패키지가 전부 받아져있었다! 정말 놀라워!
정말 어렵게 어렵게 구글링을 해가며 찾아본 결과, Xcode의 최신 버전에서 발생한 오류였고 대략 3개월정도 애플에서 방치했다고 한다...
그럼 우리가 원하는 패키지만 쓰기 위해서는 어떻게 해야할까?

앱 프로젝트 파일을 클릭한 후, TARGETS에 있는 앱 버튼을 클릭 후, 아래로 내리다보면 위 사진과 같은 항목들을 발견할 수 있다.
여기서 현재 쓰고있는 라이브러리 목록들을 확인할 수 있다.
프로젝트에 필요없는 라이브러리들을 지워주면 임시적으로 문제는 해결된다. 다만, 패키지가 완전히 사라지는게 아니라 앱이 동작할 때 필요한 리소스에서 빼주는 기능만을 담당하고 있어서 실제로 빌드를 하게되면 초기에는 라이브러리들이 같이 빌드되기 때문에 엄청난 양의 숫자를 보게될 것이다. 다만, 개발을 하면서 앱이 느려진다거나, 앱이 무거워지는 일은 없으니 걱정 안해도 될 것 같다.

사소한 이슈였지만, 하루를 거의 다 날린 느낌...

profile
I am 개발해요

0개의 댓글