이전 버전의 호환성을 고려한 앱 업데이트 및 이슈 대응 경험
- Background
- 자동 로그인을 위해 Serializable로 로컬에 저장하던 데이터 클래스가 존재함.
- 이전 버전에서 새 버전으로 업데이트하는 과정에서 역직렬화 에러가 발생 하여 자동로그인이 되지 않음.
- Problem Situation
- 새 버전 개발 도중 데이터 클래스를 수정 했고 이전 버전에서 저장된 데이터와 새 버전에서 수정된 데이터의 형태 차이로 역 직렬화 과정에서 Exception 발생
- 역 직렬화 오류 Exception이 OS 버전에 따라 다르게 발생.
- OS 6 버전 이하 : IllegalArgumentException
- OS 6 버전 초과 : InvalidClassException
- Troubleshooting & Result
- OS 버전 별로 다른 에러 핸들링을 처리
- 저장된 데이터를 바이트 배열 형태로 추출 후 문자열로 변환하여 파싱 수행, 이후 필수 데이터를 뽑아, 서버에서 전체 데이터를 받아와 복원
- Serializable 대신 Parcelize로 새로운 데이터 생성 및 저장 새로운 데이터 클래스를 생성하고 이를 이전 버전의 데이터 클래스와 분리해 관리 </aside>
https://steemit.com/kotlin/@kingori2/kotlin-lazy-field-serialize-proguard
'Android > 오류 대응' 카테고리의 다른 글
OS14 알람 및 리와인더 권한 대응을 해보자 (0) | 2024.01.22 |
---|---|
디자인 시스템을 담당하며 겪었던 일들 (0) | 2023.09.19 |
에러 추척 Firebase Crashlytics (0) | 2023.08.14 |