본문 바로가기
개발/Google Developers korea 블로그

여러분의 앱은 안드로이드 6.0 마시멜로에서 잘 동작하나요?

by darksilber 2015. 9. 19.
반응형

출처 - http://googledevkr.blogspot.kr/

 

2015년 9월 17일 목요일

여러분의 앱은 안드로이드 6.0 마시멜로에서 잘 동작하나요?

안드로이드 6.0 마시멜로의 공식 버전 SDK와 최종 개발자 프리뷰 시스템 이미지가 공개된 지 딱 한 달이 지났습니다. 여러분의 앱을 안드로이드 6.0 마시멜로에서 테스트해보셨나요? 안드로이드 6.0에는 여러분이 꼭 테스트 해보셔야 할 여러 가지 변경사항이 있습니다.

구글 코리아에서는 지난 한 달 동안 개발자분들이 직접 자신이 만든 앱을 테스트해볼 수 있도록 ‘안드로이드 M 오픈 테스트 랩' 행사를 진행했습니다. 총 다섯 번에 걸쳐 70개의 앱을 개발자분들이 직접 테스트해 보셨습니다. 결과가 어떻게 나왔는지 궁금하신가요?

보시는 것처럼, 약 절반 정도의 앱은 다행히 별다른 문제 없이 정상적으로 동작했지만, 나머지 절반 정도의 앱에서는 문제가 발견되었습니다. 특히 10% 정도는 실행 자체가 불가능하거나, 실행 중 앱이 비정상 종료되었습니다.  

추가로 구글은 다양한 디바이스와 OS 버전에서 앱을 자동으로 테스트할 수 있는 서비스 테스티드에 M 프리뷰 테스트에 필요한 장비를 지원하였습니다. 테스티드는 한국 플레이 마켓 순위에 올라와 있는 300여 개의 앱을 안드로이드 M 디바이스에서 테스트해보았습니다. 

자동으로 앱의 여러 화면을 탐색하고, 특정 권한을 제거해가며 앱의 안정성을 테스트해 본 결과, 약 7.5 %의 앱이 실행되지 않거나, 동작 중 비정상 종료되는 문제가 발견되었습니다.


무엇이 원인일까요?

지난 한달간 진행된 테스트 중에는 런타임 권한 모델, Doze 모드, 제거된 OpenSSL 라이브러리로 인해 문제가 발생하는 경우가 많았습니다.

런타임 권한 모델

안드로이드 6.0 마시멜로를 타겟으로 빌드된 앱의 경우, 앱 설치 시가 아니라, 앱 실행 중에 필요한 권한을 사용자에게 요청해야 합니다. 또한, 기존 앱의 경우에도 사용자가 설정 메뉴를 통해 각각의 앱이 가진 권한을 조정할 수 있습니다. 필요한 권한이 없는 경우, 기존 앱은 이른바 Legacy 모드로 동작하게 되는데, 이때, 특정 권한이 요구되는 API를 호출하면, 아래 표와 같이 민감한 사용자 정보를 포함하지 않도록 수정된 결과과 반환됩니다. 이런 예외 상황을 적절히 처리하지 못하면 앱이 올바르게 동작하지 못할 수도 있습니다.

제거된 권한그룹
메서드 이름
결과
PHONE
TelephonyManager#getLine1Number()
null
STORAGE
MediaStore 에 콘텐츠를 요청하는 경우
Empty Cursor
STORAGE
외부 디렉토리에 파일을 읽거나 쓰려고 하는 경우
throw
FileNotFoundException
CAMERA
CameraManager#openCamera()
throw CameraAccessException
CONTACTS
주소록 정보 요청 시
Empty Cursor
LOCATION
LocationManager#getAllProviders()
Empty Provider List
SMS
텍스트 메세지 정보 요청 시
Empty Cursor
SMS
SMS_DELIVER 브로드캐스트 인텐트 수신 시도 시
수신 할 수 없음

Doze 모드

디바이스가 사용 중이 아닌 상태로 몇 시간 가만히 있는 경우, 불필요한 배터리 소모를 줄이기 위하여 Doze 모드에 진입하게 됩니다. 이때, 디바이스에 설치된 모든 앱은 다음과 같은 제약을 받게 됩니다.


사용자가 화면을 켜거나 디바이스가 크게 움직이는 경우, 혹은 배터리를 충전하게 되면, 자동으로 Doze 모드에서 빠져나옵니다. 하지만 Doze 모드에서도 네트워크를 사용해야 하는 앱이나, 사용자가 수면 중에도 주기적으로 센서값을 확인해야 하는 수면 관리 앱, 혹은 정확한 시간에 알람을 울려야 하는 일정 관리, 알람 시계 등의 기능을 제공하는 앱들은 문제가 발생할 수 있습니다.

사라진 API

기존 OpenSSL 이 BoringSSL 로 교체됨에 따라 발생하는 문제도 있습니다. 특히, 앱에서 Android NDK를 사용하는 경우, OpenSSL 라이브러리에 대해 링크를 직접 연결하는 경우 앱이 정상적으로 동작하지 않는 경우도 종종 볼 수 있었습니다. (예:libcrypto.so 및 libssl.so) 여러분의 앱이 만일 시작하자마자 죽는다면 이 부분을 먼저 확인해 보시기 바랍니다.  

그 외에도 ApacheHttpClient 나 브라우저 북마크 등 지원이 중단된 API 도 있습니다. 혹시 여러분의 앱이 마시멜로 타겟으로 정상적으로 빌드되지 않는다거나, 기존에는 없던 오류가 발생한다면, 다음 링크를 통해 혹시 삭제된 API 를 사용하고 있는건 아닌지 확인해 보시기 바랍니다.


안드로이드 M 오픈 테스트 랩

안드로이드 6.0 마시멜로는 이번 가을 공식 공개될 예정입니다. 혹시 아직 여러분의 앱을 마시멜로에서 테스트해보지 않으셨다면, 테스트를 시작해보는 게 어떨까요? 어느새 하늘이 높고 바람이 선선한 날씨가 되었습니다.

안드로이드 M 오픈 테스트 랩은 개발 중이거나 서비스 중인 앱과 게임이 새로운 안드로이드 M 버전에서 잘 동작하는지 직접 테스트해보고, M의 새로운 기능들에 관해 궁금한 점이나 적용 방법에 관해 이야기 나눌 수 있는 행사입니다. 테스트를 위한 디바이스가 없어서 어려움이 있거나, 어떤 식으로 테스트를 진행해야 할지 도움이 필요하거나, 문제를 해결하기 위한 조언이 필요한 개발자 여러분들, 아니면 마시멜로의 새로운 기능에 관심 있는 분들은 이번 9월 24일 다시 한 번 진행될 안드로이드 M 오픈 테스트 랩 행사를 놓치지 마시기 바랍니다.

>> 안드로이드 M 오픈 테스트 랩 참가 신청하기
반응형

댓글