프로젝트를 진행하던 중 애플리케이션에 알림을 보내야 할 일이 있어서 FCM 토큰 작업을 해줘야 했다. FireBase와 연동하여 작업을 진행해줘야 했기 때문에 아래 블로그를 참고해서 작업을 진행해 주었다. 하지만, React-Native가 외부 모듈을 연동할 때 그렇게 호락호락 해줄 친구가 아니였다.
https://falsy.me/react-native%EC%97%90%EC%84%9C-fcm%EC%9D%84-%ED%86%B5%ED%95%9C-%EC%95%8C%EB%A6%BC-%EC%88%98%EC%8B%A0%ED%95%98%EA%B8%B0android/
첫 번째 에러다. 사실 간단하게 해결할 수 있었다. 아래 github issue를 통해 해결할 수 있었다.
https://github.com/invertase/react-native-firebase/issues/2332
jetifier는 react-native에서 dependency에 의한 java 코드를 업데이트 해주는 역할을 한다. jetifier를 실행하지 않으면 코드를 업데이트 해도 디버그가 되지 않을 수 있다는 말이다.
npm i jetifier
npx jetifier
위 명령어를 node_module이 있는 폴더에서 실행하면 성공적으로 위 에러를 해결할 수 있다.
이건 처음보는 에러였다. 하지만, 역시 구글 모든 에러를 가지고 있었다. 나는 아래 글을 참고로 에러를 해결하였다.
https://borntodevelop.tistory.com/entry/Execution-failed-for-task-appprocessDebugMainManifest
Firebase messaging 서비스를 위해 AndroidManifest.xml 파일에 세팅값을 추가해주어야 했는데, 해당 부분에 아래 코드를 추가해주어야 하는 문제였다.
android:exported = "true"
이 오류는 도저히 해결할 수 없었다. 구글에도 해당 에러를 겪은 사람이 없었고, GPT, 뤼튼에게 물어봐도 도저히 답변을 해주지 않았다. 그래서 스스로 문제를 해결해야 했다. 하지만, 결론은 세팅값이 뻑나간거였다. 사실 세팅값을 초기화해주고 다시 해주면 되지만, 너무 시간이 많이 드는 작업이었다. 그래서 세컨 노트북으로 쓰고 있었던 MacBook Air에 세팅을 해주었다. 세팅은 자바 17, gradle 7.5로 해주었다.
세팅을 다 해주고 ./gradlew clean, ./gradlew build를 실행하니 위와 같은 에러가 떴다. 아무래도 패키지명을 변경함에 있어서 인식하지 못하는 파일들이 몇개 있었던 것 같다. 이를 해결하기 위해 아래 블로그를 참고했다.
위 블로그를 보면서 패키지 명을 바꾸기 위해 보통 블로그들은 4개정도 바꾸라고 한다. 하지만, 5개를 바꿔야 한다.
들어가서 Package명을 다 바꿔줘야 한다. 물론 3,4번은 파일 구조 먼저 바꿔주는건 기본이고 말이다. 자세히 바꾸는 내용은 아래 블로그를 참고했다.