버디캐디 유지 보수
기본 정보
PlayStore | [Link]
- 기간 | 2023.03 ~ 2024.01
- 주 사용 기술 | Android, Kotlin, Java
프로젝트
소개
버디캐디는 2022년 2월에 출시된 GPS를 활용한 골프장 어플리케이션 입니다. 프로젝트의 구성은 Unity와 Android의 합으로 되어있으며 골프장 화면은 Untiy UI를 이용하여 구현되어있고 나머지 모든 View는 Android, IOS native View로 구현되어있습니다.
프로젝트
수행 역할
- 배포된 버디캐디 앱 기능 업데이트 및 유지보수
- 기존 구성되지 않은 로그 환경 구축
- WebView 관련 오류 수정
- Unity에 접합하는 라이브러리 구현 부분 수정
- Multi Module 전환
- 기존 Code Refactoring
- 기존 MVC 모델로 View에 결합되어있는 네트워크 로직 존재 확인
- 차후 신규 버전을 위해 MVVM 아키텍처로 전환하며 멀티 모듈화 진행
- BLE 통신 관련
- Gps Booster를 이용하여 Unity로 메세지를 전달하는 체계 모듈화
- 기존 RxJava 위주로 만들어진 블루투스 통신 구현 부 Kotlin 코드로 전환
🤔 어려움 & 도전해 본 것들
WebView 관련 오류 수정
- 기존에 버디캐디 홈에는 배너가 웹뷰로 이루어진 형식이었다. 해당 부분은 이전에 만들어진 코드의 상태로 배너가 좌우 이동을 시킬 때 버벅이고, 좌우 스와이프가 3번이 넘어가면 뷰에 딜레이가 생기는 것이 눈으로 감지되고 클릭 이벤트도 발생하지 않는 상황이 발생하였다.
<aside>
💡 WebView 관련된 클래스와 자료를 읽고 Webview의 세팅 값을 Custom 해줬다. 그 이후에도 width, height는 잘 맞지만 버벅임이 있는 증상이 있었고 이를 LayerType 변경을 통하여 해결하였다.
</aside>
기존 구성되지 않은 로그 환경 구축
- 버디캐디 내부에 Server logging 시스템이 존재했었지만, 백엔드 개발자의 퇴사로 인하여 추가 API 개발, 관련 사항이 모두 블락이 된 형태가 되었다. 이러한 사항에서 로그 환경 구축이 필요한 상황이 되었고 이를 해결할 방법을 찾기 시작하였다.
<aside>
💡 Firebase Crashlytics와 Analytics을 이용하여 해결하였다. LoggingSystem 모듈을 분리하여 모든 로그 객체를 injection하여 필요 모듈마다 주입하여 사용하는 방식으로 구현하였고 이 구현 과정에서 Crashlytics의 slack 오류 리포트 동기화와 Analytics 로깅 방식에 따른 실시간 디버그 기능도 새롭게 배우게 되었다.
</aside>
Unity에 접합하는 라이브러리 구현 수정
- 버디캐디는 골프장 뷰가 Unity로 되어있는 Unity as a Library 형식의 어플리케이션이었다. 하지만 이 과정에서 안드로이드가 Unity를 플러그인으로 가지고 있는 상황이 아니었고 Android library가 unity에 라이브러리 형식으로 연결된 상태였기에 Android 파트 Debug가 되지 않는 상황이었다.
<aside>
💡 Uaal 방식으로 Debug 파트만 재포팅을 진행하였습니다. 릴리즈 버전의 경우 해당 방식의 변화가 새로운 오류 사항을 만들어 낼 수 있기 때문에 debug용을 위해 uaal 방식의 구현으로 새로 프로젝트를 전환하였습니다.
</aside>
Multi Module 전환