2018 구글 I/O RECAP 안드로이드 주요 키워드 정리

GM.Lim
9 min readJul 3, 2018

--

18년 6월 25일 과 26일 양일간 서울 코엑스에서는 구글에서 주최하는 I/O RECAP (구글 I/O 리캡) 행사가 열렸습니다.

이 행사는 2018년 구글 I/O 에서 나왔던 주요 이슈를 다시 한번 정리 하는 행사였습니다.

모든 세션을 참가할수는 없었기에 제가 참가한 세션을 기준으로 안드로이드 개발자 라면 관심을 가져야 할 주요 키워드를 정리해보도록 하겠습니다.

  1. Kotlin , 코틀린
코틀린은 선택 아닌 필수 입니다.

2017년 구글이 안드로이드의 공식 언어로 자바 외에 코틀린을 추가하면서 많은 관심을 받은 코틀린의 안드로이드 앱에서의 점유율 상승이 뚜렷했습니다. Play 스토어에서 코틀린을 사용해서 개발한 앱의 수가 2017년 대비 6배나 늘었고, 기존 개발자중 코틀린을 새롭게 사용하는 개발자는 35% 나 된다고 하는군요.

구글에서도 개발자들을 지원하기 위해 코틀린을 위한 Android KTX 를 Android Jetpack 안에 포함시켜서 이번 I/O 에 발표 했습니다. Android KTX 는 자바 와는 다른 코틀린의 장점 과 특징을 이용해서 안드로이드 개발을 쉽고 빠르게 도와주는 많은 패키지 들이 포함되어 있습니다.

Android KTX 에 대해서는 이곳 의 공식 페이지를 참고해 주세요.

이제 코틀린은 안드로이드 개발에 있어서는 선택이 아닌 필수가 되었습니다.

2. Android App Bundle , 안드로이드 앱 번들

안드로이드 앱을 만들고, 배포를 위해 빌드를 하면 apk 가 만들어집니다. 이제는 apk 외에 aab 의 확장자를 가진 안드로이드 앱 번들 로의 배포가 지원됩니다. 안드로이드 앱 번들이 생겼다고 apk 가 사라진것은 아닙니다.

안드로이드 개발자라면 잘 아시다시피, apk 의 내부에는 많은 리소스들을 포함하게 됩니다.

다국어 지원을 위한 각 언어의 번역 내용부터, 각 기기의 해상도에 맞는 이미지, 좀 더 신경 써 보자면 가로 세로 전환 시 사용하기 위한 각기 다른 이미지부터, 깊이 들어가보자면 높은 성능을 위해 NDK 로 만들어지고 빌드되어 지원 하드웨어 별로 나뉘어 포함되는 so 파일 도 존재하게 됩니다.

모든 기기를 잘 지원하기 위한 방법이지만 이 작업은 결국 하나의 apk 를 크게 만듭니다. 해마다 새로 출시되는 기기의 용량은 커지는데 큰 apk 의 용량이 왜 문제가 될까요?

기기가 아무리 발전한다고 해도 거대한 apk 의 용량은 사용자에게 부정적인 영향을 미칩니다. apk 의 용량이 크면 다운로드 시 소비되는 데이터의 양이 증가합니다. 이는 곧 사용자가 앱을 다운로드 받는 순간부터 이것을 정말 다운로드 받을것인지 에 대한 결정을 해야 하는 큰 허들이 존재함을 의미합니다.

사용자의 기기에서 차지하는 용량이 크면 앱의 사용빈도가 떨어지는 즉시 삭제의 대상이 되겠죠. 이 모든 상황은 서비스를 제공하는 입장에서도 달갑지만은 않습니다.

사용자의 기기에 조금이라도 오래 남아 있어야, 한번이라도 더 사용될 기회가 존재하겠죠.

그래서 만들어졌습니다. 안드로이드 앱 번들.

이제까지 해왔던 대로 기기들을 잘 지원하기 위한 리소스들을 작업합시다. 그리고 안드로이드 앱 번들로 빌드를 하고, Play 스토어에 게시합니다. 이제 Play 스토어는 이 앱을 다운로드 받으려 시도하는 사용자의 기기에 맞춰 필요한 리소스 만을 선택해 최소한의 작은 apk 를 만들고, 전달하여 설치합니다. 이를 Google Play Dynamic Delivery 라고 합니다.

다이나믹 딜리버리 From Google Developers Blog

안드로이드 스튜디오 3.2 에서 사용가능하며, 만약 미리 사용해 보고 싶으시다면 현재는 안드로이드 스튜디오 3.2 Canary 를 사용하시고, 이곳 에서 구글 베타 프로그램에 가입하세요.

3. Android P Adaptive Bettery , 안드로이드 P 적응형 배터리

오레오 를 잇는 차기 안드로이드, 안드로이드 P 의 주요 기능이 공개 되었습니다. 많은 기능들이 추가 되었습니다만 그중 베터리에 관련 된 기능에 대해 정리해 볼까 합니다.

항상 안드로이드 폰의 가장 큰 이슈에는 배터리가 있습니다. 새로운 기기가 출시되면 아이폰과 비교되는 단골 메뉴이기도 하죠. 초기 안드로이드 에서는 사실 진짜로 있던 일입니다. 많은 앱 들의 무분별한 백그라운드 작업들 과 자신의 앱을 시스템 상에서 끊임없이 돌리기 위해 이벤트를 수신하기 위한 많은 브로드캐스트 리시버는 기기의 배터리를 소모하는 주범 이었죠.

안드로이드의 배터리를 개선하기 위한 노력의 역사는 오래 되었습니다.

Android M 에서 처음 Doze 모드가 등장했죠, 도즈 모드는 전원이 연결되어 있지 않고, 화면이 꺼져 있고, 가만히 놓여있는 상태라면 도즈 모드에 진입하고, 앱의 백그라운드 작업을 제한합니다. App Standby 도 있습니다. 사용자의 활동이 없는 앱에 대하여 네트워크 를 사용하거, 동기화 작업등을 모두 일시 정지 시킵니다. 또한 포그라운드 서비스 (Foreground Service) 가 아닌 백그라운드 서비스는 5초 이내에 스테이터스 바의 알림 표시 등의 방법으로 전환하지 않으면 더 이상 작업하지 못하고 강제 중지됩니다.

이제 안드로이드 P 에서는 Adaptive Battery 가 추가 됩니다. 이는 기계 학습을 사용합니다. 즉, 안드로이드가 사용자의 앱 사용 패턴을 학습하고, 이를 반영해서 베터리를 사용할수 있는 앱과 사용할수 없는 앱을 구분하고 제어합니다.

앱은 App Standby Buckets 라고 하는 버킷에 구분되는데 이는 각각 사용량에 따라 Active, Working Set, Frequent, Rare 의 4개의 그룹으로 나누고 관리합니다. Active (활성) 버킷에 속하면 할수 있는 작업이 늘어나고 Rare (희귀) 버킷에 있으면 할수 있는 작업이 거의 없습니다.

관련 공식 문서는 이곳 입니다. 각 버킷을 테스트 할수 있는 adb 명령어도 제공되네요. 도즈 모드 때와 마찬가지로, 자신의 앱이 특정 버킷에 속했을때 제대로 동작하는지를 확인하는 작업이 필요할듯합니다.

4. Display Cut-Out , 디스플레이 컷 아웃 (일명 노치 디스플레이)

네, 올것이 왔습니다. 아이폰X 에서 시작된 노치 디자인의 마수가 안드로이드에도 도달했습니다.

아이폰X 가 발표된 이래 많은 기기 제조사들이 노치 디자인을 채용한 안드로이드 기기를 발매했고, 이에 구글은 이를 발빠르게 대응하기로 하였습니다.

혹자는 구글이 너무 쉽게 애플을 따라하겠다고 결정한것이 아니냐고 합니다.

안드로이드 의 새로운 버전이 출시 될때 마다 각 제조사들은 자신들만의 차별화된 기기를 만들기 위해 매번 새로운 기능 과 하드웨어를 추가해 왔습니다. 이 부분에서 구글은 공식적으로 지원하지 않지만 기기마다 서로 다른 기능을 가지는 안드로이드가 탄생했습니다. 이를 안드로이드 파편화 라고 불렀죠.

안드로이드에서 이런 부분들을 공식적으로 지원하지 않으면서 발생하는 많은 문제들의 해결은 모두 개발자의 몫이었습니다. 이를 수없이 겪으며 헤쳐온 저로서는 노치 디스플레이에 대한 이런 빠른 대응이 상당히 고맙습니다.

어떤 새로운 요소에 대해 구글에서 강제로 가이드 라인을 만들고 제조사들을 세밀하게 컨트롤하지 못하는한 피할수 없다면 차라리 공식적으로 빠르게 지원해 주는것이 개발자에게는 좋습니다.

구글은 노치 디스플레이를 안드로이드 P 에서 디스플레이 컷 아웃 이라는 이름으로 지원합니다. 개발자 모드에서는 이 컷 아웃 디스플레이를 테스트 할수 있는 기능을 추가하였습니다.

특히 주의해야 할점은 기종마다 이 컷 아웃의 깊이 (높이) 가 서로 다를수 있고, 이는 곧 양 옆의 스테이터스 바 의 높이가 되므로, 절대 스테이터스 바의 높이를 하드 코딩 하여 사용하는 일이 없도록 하라고 권장합니다. 자신의 앱에서 혹시 스테이터스 바의 높이를 고정으로 사용하지 않는지 확인할 필요가 있습니다.

또한 기종마다 컷 아웃의 넓이 가 다르고, 이는 양 사이드의 스테이터스 바의 넓이가 다르다는 뜻이 됩니다. 이 역시 API 로 양 사이드의 스테이터스 공간에 대한 정보를 제공할것이므로, 하드코딩하여 사용하지 말고 해당 API 를 사용해서 정보를 구하여 사용해야 합니다.

컷 아웃의 양 사이드의 이 안전영역 (공식 용어 인지는 모르겠지만 세션에서 사용된 용어 입니다.) 이 안전영역에 버튼 등 개발자가 커스터마이징 할수 있는 요소를 추가 한다고 합니다.

디스플레이 컷 아웃 을 포함한 안드로이드 P 의 새로운 기능을 소개하는 구글의 동영상을 첨부 합니다.

마치며

이미 구글 I/O 2018 의 동영상을 시청한 후 참가한 터라 RECAP 행사만의 새로운 이슈는 없었습니다만, 길었던 I/O 행사와 달리 이틀에 걸쳐 정리되다 보니 핵심 내용만을 추려서 담은 듯 하여 꽤나 재밌는 행사였습니다. 다시한번 구글이 신경쓰는 모바일 에서의 키워드를 되집어 볼수 있었구요.

지금 정리된 안드로이드 관련 키워드 외에도 많은 이슈가 있었습니다 특히 AI 쪽에 재밌는 세션이 몇개 있었는데요 시간이 되는대로 그중 하나의 세션을 소개해 볼까 합니다.

2018 구글 I/O RECAP 의 전체 동영상은 아래의 링크를 통해 시청하실수 있습니다.

감사합니다.

--

--