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
이미 시행착오를 겪은 분들이 계셨고,,
https://firebase.google.com/docs/ios/setup 이 링크에 아래와 같이 쓰여 있었다! 3번의 Linker Flag를 추가하는 시도를 해봤다!
https://developer.apple.com/library/archive/qa/qa1490/_index.html
여기 애플의 가이드에서도 Objc Linker를 추가하면 된다고 한다... 대충 static library에서 Firebase를 가져오면 이런 일이 발생한다고 한다.
요기까지 진행하니 FCM이 정상적으로 작동한다. Tuist의 Settings Dictioanry에 메서드를 추가했다.
makeModule이 static method라서 내부의 값들도 static해지는 문제
settings를 thirdPartyLib인 경우에만 분기처리 해줘야 했는데, 단순히 메서드 내부에 변수를 두고 이를 thirdPartyLib인 경우에만 값을 변경해주는 식으로 하니 어쩐지 적용이 안됐다. 문제는 static method였다는 것, 그래서 새로운 변수를 하나 만들어서 thirdPartyLib인 경우와 아닌 경우에 서로 다른 변수를 사용하도록 했다.
결국 ThirdPartyLib에서 의존성을 관리하는 방법은 찾지 못했는데, 이 부분에 대해서는 추후에 더 고민해야겠다.