Glacier's Daily Log

Android) 안드로이드 어플 개발자로 살아본 후기 2편, Android Vitals 를 이용한 버그 해결 본문

Coding/Android

Android) 안드로이드 어플 개발자로 살아본 후기 2편, Android Vitals 를 이용한 버그 해결

h__glacier_ 2020. 5. 9. 13:55
반응형

2020/05/09 - [Coding | Developing/Android] - Android) 안드로이드 어플 개발자로 살아본 후기 1편, 의무경찰 성적표 앱 개발기

Android) 안드로이드 어플 개발자로 살아본 후기 1편, 의무경찰 성적표 앱 개발기

3월달 쯤 부터, 안드로이드 개발 공부를 시작한 나는, 한달 반 기간 정도 동안 3개의 어플리케이션을 출시했다. 1달 독학 한 것 치고는 정말 만족스러운 결과물들 이였고, 특히 의무경찰 성적표 ��

h-glacier.tistory.com

1편에 이어 2편을 포스팅 해보겠다.

안보신 분들은 1편부터 보고 오세요!


꾸준히 계속 증가추세를 보이던

골치아픈 버그

Developer Console의 비정상 종료 보고서를 보고 분석해보았다.

 

Google Play Console 에서는 어플에 대한 정말 자세하고 디테일한 정보들을 제공하고 있었다.

 

 

비정상 종료 보고서

 

보면, 거의 95%의 비정상 종료가 Android 7.1과 Android 7.0에서 일어난다.

여기서 이상한점을 느꼈다.

내 어플의 대부분의 사용자들은 Android 9, Android 10을 사용중인데

버그는 Android 7.1 , 7 에서만 일어난다?

 

그러면 내 앱이 Android 7.1 이하에서 작동하지 않는구나 라는 생각이 들었다.

그래서 자세한 오류 보고서를 찾아보니,

 

 

 

모든 Android 7에서 발생하는 오류가 "java.lang.NoClassDefFoundError" 였다.

그래서, 그 오류를 촉발한 MainActivity.java:131 을 찾아보았다.

 

 

MainActivity.java:131

 

두둥, 결과는 정말 의외였다.

LocalDate 클래스가 계속 오류를 뿜고 있었다.

여기서 눈치를 살짝 챘다. 

 

내가 만든 전역일 계산기의 로직은

Java의 Localdate 라이브러리를 활용하여

날짜간의 일수 차이를 계산한다.

 

하지만, 이 Localdate 함수가,

https://developer.android.com/reference/java/time/LocalDateTime

 

LocalDateTime  |  Android 개발자  |  Android Developers

LocalDateTime public final class LocalDateTime extends Object implements Temporal, TemporalAdjuster, ChronoLocalDateTime , Serializable java.lang.Object    ↳ java.time.LocalDateTime A date-time without a time-zone in the ISO-8601 calendar system, such as 2

developer.android.com

 

 

Added in API level 26

이 결과를 구글링으로 찾아버렸다.

그렇다. 내가 애용하던 LocalDateTime 클래스는,

안드로이드 API 26 부터 추가되었다는 것이다.

 

여기서 API 26은 어느 버전에 해당하는 api인가?

 

 

두둥,,

 

하하,, Android 8.0이 API 26 을 처음으로 적용한 버젼 이였다.

 

결론은, Android 7.1 , 7.0은 내 앱을 사용할 수 없다.

내가 LocalDate 클래스 대신 다른 로직으로 변경하지 않는 이상

절대 사용할 수 없는 것이였다..

 

래서 개발 초기부터, 이러한 api 대응 관계를 찾아보고 개발을 시작하는구나

라고 정말 큰 깨달음을 얻게 된 계기가 되었다.

 

이를 해결하려면 앱을 처음부터 다시 개발해야 하기 때문에

아쉽지만 정말 옛날 폰인 안드로이드7 버전은 지원을 포기했다.

 

생각보다 많은 Android7 사용자들이 내 앱을 다운받아 주었지만, 아쉽게도 해결해주지 못하였다.

 


이렇게 내가 만든 앱의 오류를 직접 해결해 가면서

많은 깨달음과 공부를 하는 것 같다.

 

반응형
Comments