Multiple Firebase Configuration 설정하기

Requirements xcconfig 과 Xcode scheme 을 이용하여 하나의 Xcode 프로젝트로 각 서버환경에 따른 앱을 구성했다. (요건 별도의 포스팅을 통해 상세히 서술해보겠습니다.) 오류 로그 관리를 위해 Firebase Crashlytics 서비스를 이용하기로 결정하였고 Firebase 에서 제공하는 메뉴얼을 통해 SDK를 연동 중 GoogleService-Info.plist를 다운받았다. 서버 환경이 3종류다보니 3개의 파일을 받았다. Try First FirebaseOption 클래스를 보니 파일이름을 파라미터로 instance를 생성하는 인터페이스가 존재한다. 동일한 파일명의 파일 3개를 프로젝트에 포함시켜야 하니 구분을 용이하게 하기 위해 파일이름을 아래와 같이 변경하였다. GoogleService-Info-Dev.plist GoogleService-Info-Staging.plist GoogleService-Info-Production.plist 그리고 아래와 같이 코드를 작성하였다. 실행을 했더니 GoogleService-Info.plist 파일을 찾을 수 없다는 경고가 로그창에 나타난다. 😣😤😡 Firebase SDK 개발팀에 대한 불만은 이전부터 있었다. SDK가 업데이트 될 때마다 자잘한 버그들이 끊이지 않은 것 때문인데, 이 경우도 그렇다. 인터페이스는 만들어두고 왜 코드 내부에서는 이를 처리하도록 하지 않는 것인가! 반성 좀 하길.. 😡 구글링을 해서 찾아보니 이 문제 때문에 발행된 이슈들이 꽤 있었다. In new Firebase, how to use multiple config file in xcode? Use different GoogleService-Info.plist for…

Swift Package Manager(SPM) 써보기 #2

현재 필자가 관리 중인 프로젝트에서 SPM으로 등록된 library들을 import 할 수 없는 문제가 발생했다. 내가 뭔가 잘못한 것인가? 를 검증하기 위해 구글링을 해보던 차에 apple developer forums 에서 아래와 같은 글을 발견하였다. Ok so after various tries I’ve created new project, added files from the old one and during this I’ve encountered at identical situation, it turns out that the issue is not in build settings but rather in configuration.You cannot build SPM with different configuration than ‘Debug’ and as in most of my projects I have multiple configurations, that why I wasn’t able to use SPM in them.Unfortunately I couldn’t find a way to change target configuration, nevertheless I’m closing this thread, I hope that my explanation above will hope someone with the same issue 필자가 관리하고 있는 프로젝트 역시 여러 개의 configuration을 설정해놓은 상태인데 과연 이 문제일까해서 몇 가지 테스트를 진행해보았다. 테스트 Configuration 설정을 기본값으로… 새로운 프로젝트를 하나…

Swift Package Manager(SPM) 써보기 #1

기다리던 Xcode 11 GM이 나왔다. 과감하게(?) 개발 중이던 프로젝트를 열고 SPM을 지원하는 외부 library를 리스팅 후 Podfile 에서 삭제하고 이를 SPM으로 관리할 수 있게 설정을 해보았다… 과정은 아래와 같다. SPM을 이용해 외부 라이브러리 등록하기 SPM을 이용하여 외부 프레임워크를 등록하기 위해서는 Project -> Swift Package로 이동하여 +버튼 선택 혹은 상단 메뉴 File -> Swift Packages -> Add Package Dependency… 를 선택한다. 현재 SPM을 지원하는 인기(필자가 주로 사용하는 ㅋ) 외부 라이브러리는 얼추 아래와 같다. RxSwift, RxCocoa, RxDataSources Alamofire SDWebImage SnapKit 위에 나열된 것 외의 오픈소스 library가 SPM을 지원하는지 여부를 확인하기 위해서는 해당 Git Repository로 가서 확인하면 되겠다. (CocoaPods으로 관리하던 라이브러리가 대부분일텐데 https://cocoapods.org 로 이동 후 원하는 라이브러리를 검색하고 상세 보기에서 오른쪽 하단에 보면 GitHub Repo 링크를 통해 이동하면 편리하다.) 버전 관리 룰 지정 Repository URL 을 입력하고 하단 Next 버튼을 누르면 해당 Repository를 검색한 후 아래와 같이 버전 관리 rules를 어떻게 할 것인지 묻는 창으로 바뀐다. 버전 관리룰은 아래와 같으며, 편한 방법으로…