[Flutter] 과거 프로젝트 리팩토링을 시작하며-1

민태호·2025년 8월 4일
0

Flutter

목록 보기
22/23

첫 회사에 입사한지도 이제 10개월이다.
졸업을 위해 공들여 진행했던 프로젝트를 출시한지가 엇그제같은데 벌써 1년이 넘었다.
한창 프로젝트 할 때보다 스스로 배운 것도 많고, 출시한 이후로 거의 만져본 적이 없어서, 이 참에 배운 것들을 활용하여 여러가지 개선과 리팩토링을 진행하려 한다.

우선 돌아가는 지 테스트

역시 오랫동안 건드리지 않은 코드에는 거미줄이 생기는 법.
gradle버전부터 해서 여러가지 마이그레이션 할 부분들이 넘쳐나서 한 번씩 빌드해보며 debug console에서 친절히 알려주는 대로 따라서 수정했다.
firebase를 사용했기에 재설정해주니 잘 빌드된다.
기능 테스트 해보면 분명 어디선가 에러가 발생할것이므로, 우선 .gitignore 작성해주고 빌드되는 시점에서 깃허브에 잘 커밋해줬다.

목표 설정

  1. 아무 생각 없이 사용했던 riverpod 패키지를 provider로 변경, View-ViewModel 구조의 데이터 바인딩을 구현
  2. 디자인 개선
  3. 로딩 화면과 같은 사용자 경험 개선

첫 문제

빌드 후 첫 로그인 부터 문제가 발생했다.
Google 소셜 로그인으로 구현했는데, 다음과 같은 에러가 발생했다.

GoogleSignInException(code GoogleSignInExceptionCode.clientConfigurationError, serverClientId must be provided on Android, null)

해결 시도

다음과 같은 해결을 시도했다.

  • clean & pub get
  • 앱 ID 일치 화인 ex) com.example.myapp
  • Firebase Console 프로젝트에 연결된 앱 모두 삭제하고 SHA1, SHA256 지문 재설정 및 google-services.json 재적용
  • Google Cloud Console에서 프로젝트에 연결된 모든 API와 클라이언트 ID 삭제, 파베 콘솔에서 프로젝트에 연결된 모든 앱 삭제 후 재설정
  • Flutter 프로젝트를 새로 생성하여 코드 옮기고 재시도
  • firebase_options.dart 파일에서 정의된 FirebaseOptionsandroidClientId파라미터에 Google Cloud Console에서 확인 가능한 OAuth 2.0 Web Client 넣고 재빌드

전혀 해결되지 않았고 모든 시도에서 동일한 예외가 발생했다.

결국 해결

Flutter 개발자들이 모인 카카오톡 오픈채팅에 조언을 구해서 해결했다.
결국 '라이브러리 버전 문제'였고, google_sign_in을 구버전으로 고정하고 실행했더니 정상적으로 동작했다.
패키지를 무작정 업데이트하지 않고 호환성을 위해 왜 버전관리와 유지가 중요한지 몸소 느꼈다.

패키지 버전을 안정화하고 빌드 및 기존 기능의 정상동작까지 확인했다.
다음 장부터 본격적인 리팩토링을 기록하겠다.

profile
Flutter Developer

0개의 댓글