본문 바로가기

TIL

[TID] #8 - Tuist Project에 Firebase 의존성 추가하기

Tuist에 Firebase 의존성 추가

Tuist를 적용한 프로젝트에 FCM 세팅을 하느라 Firebase 의존성을 추가해야 했는데, 또 듣도보도 못한 에러를 만났다.

 

처음에는

undefined symbol _gulisloggablelevel

요런 에러가 15줄 이상 떴다... dynamic framework로 구성한 ThirdPartyLib에서 뭔가 문제가 발생하는 듯 했는데

 

여러가지 시도를 해보다가 Firebase 의존성 문제라는 것을 알았고, 

 

여차저차 해서 메인 앱 프로젝트에 FirebaseMessaging을 의존성으로 추가해줬더니...

이번에는 아래와 같이 뜨면서 앱이 강제종료된다....

 

+[FBLPromise onQueue:do:]: unrecognized selector sent to class other linker flag

 

열심히 구글링해보니

https://github.com/firebase/firebase-ios-sdk/issues/5461

 

add Analytics To Project Crash :[FBLPromise onQueue:do:]: unrecognized selector sent to class 0x10524cc78 · Issue #5461 · fi

My podfile: pod 'Firebase/Analytics' pod Information Analyzing dependencies Downloading dependencies Installing Firebase (6.23.0) Installing FirebaseAnalytics (6.4.2) Installing FirebaseCor...

github.com

이미 시행착오를 겪은 분들이 계셨고,,

 

https://firebase.google.com/docs/ios/setup 이 링크에 아래와 같이 쓰여 있었다! 3번의 Linker Flag를 추가하는 시도를 해봤다!

 

https://developer.apple.com/library/archive/qa/qa1490/_index.html

 

Technical Q&A QA1490: Building Objective-C static libraries with categories

Technical Q&A QA1490 Building Objective-C static libraries with categories Q:  How do I fix "selector not recognized" runtime exceptions when trying to use category methods from a static library? A: If you're seeing a "selector not recognized" runtime exc

developer.apple.com

여기 애플의 가이드에서도 Objc Linker를 추가하면 된다고 한다... 대충 static library에서 Firebase를 가져오면 이런 일이 발생한다고 한다.

요기까지 진행하니 FCM이 정상적으로 작동한다. Tuist의 Settings Dictioanry에 메서드를 추가했다.

 

makeModule이 static method라서 내부의 값들도 static해지는 문제

settings를 thirdPartyLib인 경우에만 분기처리 해줘야 했는데, 단순히 메서드 내부에 변수를 두고 이를 thirdPartyLib인 경우에만 값을 변경해주는 식으로 하니 어쩐지 적용이 안됐다. 문제는 static method였다는 것, 그래서 새로운 변수를 하나 만들어서 thirdPartyLib인 경우와 아닌 경우에 서로 다른 변수를 사용하도록 했다.

 

결국 ThirdPartyLib에서 의존성을 관리하는 방법은 찾지 못했는데, 이 부분에 대해서는 추후에 더 고민해야겠다.