Dev

2019 Google IO – What’s New Android 살펴보기

May 15, 2019

2019 Google IO – What’s New Android 살펴보기

순서상 Google Developer Keynote 이후 What’s New Android가 나온다. 그래서 중복적인 내용이 있으나, 36분간 안드로이드 이야기로 꾸려지며, 이번 Google I/O 기간 Android에서 어떤 내용이 나올지가 여기에서 소개된다.

올해는 그중 Android에서 코틀린 First가 메인 소식 중 하나인데 여기에서 가볍게 소개하고 있다.

 

Android Q 추가 사항

Android Q UI 관련 추가사항 몇 가지를 소개하고, 관련 세션을 소개하였다 그 중 Bubbles, Dark theme, Sharing, Notification priority, Notification actions, Gesture navigation에 대해서 정리한다.

Notification 관련 내용은 아래 영상에서 확인 가능하다.

Dark theme 및 Gesture 관련 내용은 아래 영상에서 확인 가능하다.

Bubbles

Android Q부터는 노티피케이션에 대한 아이콘을 전역으로 띄울 수 있게 되었다. 이미 익숙한 페이스북 메신저 앱과 동일하게 전역 아이콘을 통해 채팅을 할 수 있는 형태를 제공할 수 있다. 아직까지 하나의 예로 채팅을 소개하고 있으나, 추후 얼마나 많은 버블이 생길지는 알 수 없다.

어느 정도 제약 사항은 생길 수 있지만 현재는 아래와 같이 소개해주었다.

image_01
image_01

참고로 샘플 코드는 Android Q 베타가 나왔을 때 이미 공개되어서 아래 링크로 확인 가능하다.

 

Notification priority & gentle

노티피케이션에 우선순위를 priority 및 gentle로 구분한다. 결국 아래와 같은 이유인데. 모든 것을 IMPORTANCE_HIGH로 호출하면 사실 큰 의미가 없어진다. 모든 게 다 중요한데 중요한 게 뭔지 알 수 없다.

그래서 결국 priority와 gentle 2가지로 구분하여 아래와 같이 순위를 가지도록 하며, 추가 영상을 보니 머신러닝으로 처리하는 듯하다.(아직 추가 영상을 자세히 안 보고 해당 부분만 확인했다.)

image_06
image_06

 

Notification actions

Notification actions의 replay 기능은 Android 7.0(Nougat)부터 제공하는 기능이다. 매년 대화를 빠르게 하기 위한 기능을 추가했는데, 이번엔 다양한 옵션도 제공한다고 한다. 아래 그림에서 바로 확인할 수 있는데 빠른 응답 외에 지도로 현재 위치를 보낼 수 있는 액션도 추가되었다.

image_07
image_07

 

New Q share sheet

Android Q에서 새로운 sheet를 추가하였다. 사실 이 sheet는 사용자 추천을 불러오는데 너무 오랜 시간 걸리고, 딱히 유용하지 않았다. 픽셀에서 사용은 하고 있지만 너무 느려서 불편한 건 사실이다.

Android Q에서는 새로운 sheet를 추가하였다.

  • Content preview를 이미지와 텍스트로 제공한다.
  • 새로운 shortcut API를 제공하는데 앱을 실행할 필요가 없어졌다.
  • clipboard 정보를 최 상단에 바로 노출시켜준다.
  • 빨라졌다.

결과적으로 이를 구현한 게 오른쪽 사진과 같다.

image_05
image_05

 

Dark theme

Android P에 추가되어있는 Dark theme를 전역에서 사용자가 직접 설정할 수 있게 추가되었다.

image_02
image_02

기존에는 배터리 상태 또는 특정 시간 동안 Dark theme를 사용할 수 있는 MODE_NIGHT_AUTO_TIME 옵션을 이용하거나, 일부 앱에서 이를 선태적으로 적용할 수 있었다.

Android Q부터는 전역에서 사용자가 직접 Dark theme를 선택할 수 있고, 개발에서 이를 활용할 수 있도록 제공한다. 기존에 있던 MODE_NIGHT_AUTO_TIME는 더 이상 사용하는 게 불가능하다.

image_03
image_03

Android Q에서 Dark theme를 제공하는 옵션은 크게 4가지가 있다고 한다.

  • Option A. theme를 통한 DayNight 테마 선택하기
  • Option B. AndroidManifest.xml에서 forceDarkAllowed=”true/false” 또는 view.setForceDarAllowed(true/false) 지정
  • Option C. -night resource 활용(다크 테마 용 resource 추가)
  • Option D. ignore OS night mode(이 옵션은 아무것도 하지 않으면 된다.)
image_04
image_04

 

Gesture navigation

Gesture navigation은 안드로이드 Q에서 추가한 새로운 Gesture 덕분이다. 바로 PhoneX처럼 하단에 tab 바 하나와 양 사이드에서 백키가 동작할 수 있도록 새로운 제스처를 추가하였다.

image_08
image_08

이에 따라 edge 부분의 처리가 필요하며, 하단의 Gesture 영역이 필요해졌다. 위에서 추가한 영상에서 자세하게 확인 가능하지만, 실제 Android 동작은 아래 이미지를 참고할 수 있다.

Android-Q-Sample
Android Q에 적용한 제스쳐

 

ETC

몇 가지 추가 및 변경 사항을 정리한다.

 

WebView

WebView는 Trichrome이라는 library로 변경되었고, hung renderer 처리를 아래와 같이 할 수 있다.

image_09
image_09

 

Accessibility

접근성 관련 코드들이 개선되었다.

image_10
image_10

Accessibility 관련 영상

 

Text 관련

Android P에서 추가한 Hyphenation 기능이 성능이 좋지 않아 Q에서 다시 off 시켰다고 한다. 이 Hyphenation은 영문이 길면 – 붙여주는 기능이다.

image_11
image_11

 

돋보기(Magnifier)

이미지의 돋보기 기능을 사용할 수 있다. 사용 방법은 간단하다.

image_12
image_12

 

사용하지 말아야 할 API 추가

Android P부터 사용하지 말아야 할 API 목록을 제공하고 있다. Q에서도 여전히 유효하며 더 추가되었다.

관련 문서 : https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces

image_13
image_13

 

ART

Android P의 Runtime 세션에서 발표한 내용의 결과를 소개했다.

App Profiles을 클라우드로 적용함으로써 최대 ~15%의 성능 향상을 가져왔다고 한다.

image_14
image_14

GC에 대해서도 변경되었다고 하는데 아래 세션에서 확인 가능하다.

 

Kotlin

이번 IO의 주요 내용 중 하나인 Android Kotlin first. 그리고 라이브러리도 이젠 코틀린으로 배포한다.

라이브러리까지 코틀린으로 배포하다 보니 이젠 Kotlin을 사용하지 않는 자바 프로젝트에서도 코틀린 플러그인이 기본으로 들어가야 한다. 결국 모두가 코틀린을 하라는 소리이지만 라이브러리 업데이트는 어차피 해야 한다는 점을 명심하라.

최신 Jetpack 라이브러리 사용 시에는 꼭 필요하다.

 

Preferences

android에 포함되어있는 Preferences를 Deprecated 시키고, Jetpack의 androidx.preference를 제공한다고 한다.

Preferences 문서

 

Jetpack compose

Compose는 이전 글에서도 짧게 소개했지만 What’s New in android 세션에서는 로메인 가이가 직접 코드를 작성하고, 테스트도 진행했다.

image_15
image_15

 

Privacy

Privacy 관련한 내용을 정리한다. 관련 영상은 아래와 같다.

 

External Storage

안드로이드 Q부터는 External Storage 접근 권한이 변경되었다.

안드로이드 Q Scoped Storage 이해하기 – 휴우님 작성 글을 참고하면 더 자세한 내용을 얻을 수 있다.

저장소 접근 범위가 달라지는데 이에 따른 Target도 달라졌다.

Target Sdk P는 현상태 유지
Target Sdk Q는 새로운 Scoped Storage를 지정해야 한다. 단순하게 말하면 더 이상 다른 앱이 만들어놓은 파일을 접근할 수 없다.

더 쉽게 말하면 아이폰이다.

내가 가진 폴더만 접근할 수 있으며, 필요시 사진, 음악, 문서 폴더의 접근을 사용자에게 요청하고, 접근할 수 있다.

image_16
image_16

특히나 한국은 공인인증서를 sd 메모리 하단에 보관하고 사용한다.(분명 좋은 방법도 있다) 현재는 앱마다 이 폴더에 만 접근하여 사용하는데, 앞으로는 각각의 앱에서 모두 따로따로 공인인증서를 복사하고, 이를 활용해야 한다.

사용자 입장에서는 귀찮아지는 부분이기도 하나 보안상 필요한 부분이기도 하다. 참고로 한국의 공인인증서라는 건 사용자가 모든 걸 책임지고 사용하고, 책임도 져야 하는 그런 인증서라 관리는 사용자가 잘 해야 한다.

 

Location

Location의 권한에 항상 사용하기 이외 이번 만 허용하기가 추가되었다. 사용자가 앱을 사용하는 동안에 만 접근을 허용할 수 있는 권한이 생겼다. 아이폰에도 이와 동일한 권한이 있는데 안드로이드도 같아졌다.

image_17
image_17

 

Background Activity Starts

백그라운드에서는 이제 Activity를 실행할 수 없다. 대신 포그라운드 상태의 pending intent 등의 방법을 활용해서 접근해야 한다.

사용자가 알지 못하는 상태로의 접근은 불가능하게 된 것이다.

image_18
image_18

 

Settings Panel

Internet, Wi-Fi, NFC, Volume 등에 Settings Panel을 요청할 수 있다.

직접 켜는 건 불가능하고, 아래와 같이 코드를 포함하여 호출이 가능하다.

image_19
image_19

 

마무리

What’s New in Android에서 안드로이드 전반적인 걸 소개했는데, 필자가 관심 있는 내용들 위주로 위와 같이 정리하였다.

관련 영상도 추가해두었으니 필요하면 자세히 보는 게 좋다.