에르노트

안드로이드 8.0 Oreo에서만 발생하는 비정상 종료 해결법(Autofill Framework) 본문

Dev/Android

안드로이드 8.0 Oreo에서만 발생하는 비정상 종료 해결법(Autofill Framework)

두콩 2019. 10. 1. 01:42

 약 3년 전에 출시했다가 내렸던 Chest Memo를 플레이스토어 다시 올렸다. 그리고 채 몇시간이 지나지 않아 '누르자마자 튕겨요'라는 대답이 돌아왔다.. 즉각 여러 기기에서 테스트를 거듭한 끝에 결국 문제는 안드로이드 8.0 오레오 버전에서만 터진다는 사실을 알아차릴 수 있었다.

 

 앱을 처음 출시했던 2016년도의 안드로이드 최신 버전은 안드로이드7 누가였고, 그마저도 이제 막 나온 따끈따끈한 버전이었다(2016년 8월 22일에 Android7.0 Nougat이 처음 출시됐다). 다시 말해 그 당시만해도 오레오 버전은 아예 존재하지도 않았다... 그러나 3년이 지난 지금에서 안드로이드8(Oreo) 버전을 지원하는 것은 너무도 당연하고, 오레오 버전의 시장점유율은 정말로 무시할 것이 못 된다.

 

 

 사용자로부터 오류 보고서를 받아서 코드를 뒤적인 끝에 문제의 원인이 EditText에 있음을 깨달았다. ChestActivity의 41번째 줄은 단순히 EditText를 findViewById()로 초기화하는 라인이다. 그래서 EditText와 안드로이드8.0 Oreo를 엮어서 구글링을 해댔고, 스택오버플로우에서 딱 맞는 답변을 얻을 수 있었다.

 

 결론은 간단하다. 안드로이드 8.0에 Autofill Framework와 관련하여 자체적인 버그가 있었고(구글도 결국 사람이 모인 집단이니까..) 안드로이드 8.1로 업데이트되면서 해결되었다. 그렇기 때문에 롤리팝(안드로이드5.0)이나 마시멜로우(안드로이드6.0)와 같은 구버전에서 멀쩡히 돌아갔으며 지금 필자가 사용중인 파이(안드로이드9.0)에서도 잘만 돌아가던 앱이 유독 오레오(안드로이드8.0)에서만 죽었던 것이다.

 

 그렇다고 안드로이드8.0 사용자는 앱을 쓰지말라고 할 것인가? 구글의 실수지만 개발자가 책임져야 한다;; 다행히 해결법 역시 매우 간단하다!

 

XML에서 EditText의 속성에다가  android:importantForAutofill="no" 한 줄을 추가해주면 끝이다!

 

 이런 일을 겪고나면 안드로이드 버전 업데이트에 따른 파편화 현상에 대해서 다시 한번 생각하게 된다. 그래도 머 어쩔수 없다. 안드로이드에는 유독 경험적으로 부딪히면서 해결해야하는 문제가 많은 것 같다. 그런 의미에서 시행착오를 겪을수록 한층 더 성장하는거라고 생각하자. 결말이 다소 허무할지 모르지만, 그래도 누군가에겐 도움이 될 수 있기 바라며 글을 마친다.

 

 

 

 

Comments