개발자 블로그

안드로이드 오레오 대응 개발시 권한 관련 주의사항 본문

프로그래밍/안드로이드

안드로이드 오레오 대응 개발시 권한 관련 주의사항

로이드.Roid 2017. 9. 19. 12:19

안드로이드 마시멜로 버전이 출시되었을 때, 변경된 권한 모델로 인해서 꽤 많은 피(?)를 본 경험이 있다. 그래서 그런지 새로운 안드로이드 버전이 출시 될 때마다 '권한'과 관련된 변경사항은 특별히 더 신경을 써서 챙겨본다.

과거 마시멜로 권한 관련 에피소드는 아래 링크를 참조

2016/10/20 - [전업개발자 이야기] - 첫 번째 앱을 출시했다가 다시 내리기까지..


이번에 새롭게 출시 된 안드로이드 오레오(Oreo, 8.0) 버전에서도 '권한'에 대한 변경이 있다.

(원문 보기 : https://developer.android.com/about/versions/oreo/android-8.0-changes.html?hl=ko#rmp)

간단하게 설명하면, 안드로이드 마시멜로(6.0)부터 누가(7.1) 까지는 위험한 권한을 요청 할 때 권한 그룹에 속하는 권한(예를 들면, READ_EXTERNAL_STORAGE 같은..) 중 하나로 요청을 하면 해당 그룹에 속한 권한을 모두 사용할 수 있었는데, 이게 '잘못된' 동작이었다는 것. 그래서 오레오(8.0) 버전부터는 명시적으로 요청한 권한만 허용하도록 변경되었다는 얘기다.

밑에 있는 예시가 딱 나한테 해당되는 케이스다. 아마 나 뿐만 아니라 가장 일반적인 케이스가 아닐까 싶다. 외부 저장소에 읽고 쓸 수 있는 권한은 위험한 권한으로 분류되기 때문에 런타임에 권한을 요청해야 된다. 일반적으로 쓰기 권한을 요구하는 앱의 경우에는 읽기 권한도 함께 필요로 하는데, 내 경우에는 그냥 READ_EXTERNAL_STORAGE를 써서 요청했었다. 하지만 오레오 버전부터는 이렇게 READ_EXTERNAL_STORAGE만 요청을 하게 되면, 딱 읽기 권한만 주어지기 때문에 쓰기 작업을 할 때 예외가 발생하고, 예외처리를 하지 않았다면 앱이 비정상 종료된다.

Comments