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부터는 노티피케이션에 대한 아이콘을 전역으로 띄울 수 있게 되었다. 이미 익숙한 페이스북 메신저 앱과 동일하게 전역 아이콘을 통해 채팅을 할 수 있는 형태를 제공할 수 있다. 아직까지 하나의 예로 채팅을 소개하고 있으나, 추후 얼마나 많은 버블이 생길지는 알 수 없다.
어느 정도 제약 사항은 생길 수 있지만 현재는 아래와 같이 소개해주었다.
참고로 샘플 코드는 Android Q 베타가 나왔을 때 이미 공개되어서 아래 링크로 확인 가능하다.
Notifications priority & gentle
노티피케이션에 우선순위를 priority 및 gentle로 구분한다. 결국 아래와 같은 이유인데. 모든 것을 IMPORTANCE_HIGH로 호출하면 사실 큰 의미가 없어진다. 모든 게 다 중요한데 중요한 게 뭔지 알 수 없다.
그래서 결국 priority와 gentle 2가지로 구분하여 아래와 같이 순위를 가지도록 하며, 추가 영상을 보니 머신러닝으로 처리하는 듯하다.(아직 추가 영상을 자세히 안 보고 해당 부분만 확인했다.)
Notifications actions
Notification actions reply 기능은 Android 7.0(Nougat)부터 제공하는 기능이다. 매년 대화를 빠르게 하기 위한 기능을 추가했는데, 이번엔 다양한 옵션도 제공한다고 한다. 아래 그림에서 바로 확인할 수 있는데 빠른 응답 외에 지도로 현재 위치를 보낼 수 있는 액션도 추가되었다.
New Q share sheet
Android Q에서 새로운 sheet를 추가하였다. 사실 이 sheet는 사용자 추천을 불러오는데 너무 오랜 시간 걸리고, 딱히 유용하지 않았다. 픽셀에서 사용은 하고 있지만 너무 느려서 불편한 건 사실이다.
Android Q에서는 새로운 sheet를 추가하였다.
- Content preview를 이미지와 텍스트로 제공한다.
- 새로운 shortcut API를 제공하는데 앱을 실행할 필요가 없어졌다.
- clipboard 정보를 최 상단에 바로 노출시켜준다.
- 빨라졌다.
결과적으로 이를 구현한 게 오른쪽 사진과 같다.
Dark theme
Android P에 추가되어있는 Dark theme를 전역에서 사용자가 직접 설정할 수 있게 추가되었다.
기존에는 배터리 상태 또는 특정 시간 동안 Dark theme를 사용할 수 있는 MODE_NIGHT_AUTO_TIME 옵션을 이용하거나, 일부 앱에서 이를 선태적으로 적용할 수 있었다.
Android Q부터는 전역에서 사용자가 직접 Dark theme를 선택할 수 있고, 개발에서 이를 활용할 수 있도록 제공한다. 기존에 있던 MODE_NIGHT_AUTO_TIME는 더 이상 사용하는 게 불가능하다.
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(이 옵션은 아무것도 하지 않으면 된다.)
Gesture navigation
Gesture navigation은 안드로이드 Q에서 추가한 새로운 Gesture 덕분이다. 바로 PhoneX처럼 하단에 tab 바 하나와 양 사이드에서 백키가 동작할 수 있도록 새로운 제스처를 추가하였다.
이에 따라 edge 부분의 처리가 필요하며, 하단의 Gesture 영역이 필요해졌다. 위에서 추가한 영상에서 자세하게 확인 가능하지만, 실제 Android 동작은 아래 이미지를 참고할 수 있다.
ETC
몇 가지 추가 및 변경 사항을 정리한다.
WebView
WebView는 Trichrome이라는 library로 변경되었고, hung renderer 처리를 아래와 같이 할 수 있다.
Accessibility
접근성 관련 코드들이 개선되었다.
Accessibility 관련 영상
Text 관련
Android P에서 추가한 Hyphenation 기능이 성능이 좋지 않아 Q에서 다시 off 시켰다고 한다. 이 Hyphenation은 영문이 길면 - 붙여주는 기능이다.
돋보기(Magnifier)
이미지의 돋보기 기능을 사용할 수 있다. 사용 방법은 간단하다.
사용하지 말아야 할 API 추가
Android P부터 사용하지 말아야 할 API 목록을 제공하고 있다. Q에서도 여전히 유효하며 더 추가되었다.
관련 문서 : https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces
ART
Android P의 Runtime 세션에서 발표한 내용의 결과를 소개했다.
App Profiles을 클라우드로 적용함으로써 최대 ~15%의 성능 향상을 가져왔다고 한다.
GC에 대해서도 변경되었다고 하는데 아래 세션에서 확인 가능하다.
Kotlin
이번 IO의 주요 내용 중 하나인 Android Kotlin first. 그리고 라이브러리도 이젠 코틀린으로 배포한다.
라이브러리까지 코틀린으로 배포하다 보니 이젠 Kotlin을 사용하지 않는 자바 프로젝트에서도 코틀린 플러그인이 기본으로 들어가야 한다. 결국 모두가 코틀린을 하라는 소리이지만 라이브러리 업데이트는 어차피 해야 한다는 점을 명심하라.
최신 Jetpack 라이브러리 사용 시에는 꼭 필요하다.
Preferences
android에 포함되어있는 Preferences를 Deprecated 시키고, Jetpack의 androidx.preference를 제공한다고 한다.
Jetpack compose
Compose는 이전 글에서도 짧게 소개했지만 What’s New in android 세션에서는 로메인 가이가 직접 코드를 작성하고, 테스트도 진행했다.
Privacy
Privacy 관련한 내용을 정리한다. 관련 영상은 아래와 같다.
External Storage
안드로이드 Q부터는 External Storage 접근 권한이 변경되었다.
안드로이드 Q Scoped Storage 이해하기 - 휴우님 작성 글을 참고하면 더 자세한 내용을 얻을 수 있다.
저장소 접근 범위가 달라지는데 이에 따른 Target도 달라졌다.
Target Sdk P는 현상태 유지 Target Sdk Q는 새로운 Scoped Storage를 지정해야 한다. 단순하게 말하면 더 이상 다른 앱이 만들어놓은 파일을 접근할 수 없다.
더 쉽게 말하면 아이폰이다.
내가 가진 폴더만 접근할 수 있으며, 필요시 사진, 음악, 문서 폴더의 접근을 사용자에게 요청하고, 접근할 수 있다.
특히나 한국은 공인인증서를 sd 메모리 하단에 보관하고 사용한다.(분명 좋은 방법도 있다) 현재는 앱마다 이 폴더에 만 접근하여 사용하는데, 앞으로는 각각의 앱에서 모두 따로따로 공인인증서를 복사하고, 이를 활용해야 한다.
사용자 입장에서는 귀찮아지는 부분이기도 하나 보안상 필요한 부분이기도 하다. 참고로 한국의 공인인증서라는 건 사용자가 모든 걸 책임지고 사용하고, 책임도 져야 하는 그런 인증서라 관리는 사용자가 잘 해야 한다.
Location
Location의 권한에 항상 사용하기 이외 이번 만 허용하기가 추가되었다. 사용자가 앱을 사용하는 동안에 만 접근을 허용할 수 있는 권한이 생겼다. 아이폰에도 이와 동일한 권한이 있는데 안드로이드도 같아졌다.
Background Activity Starts
백그라운드에서는 이제 Activity를 실행할 수 없다. 대신 포그라운드 상태의 pending intent 등의 방법을 활용해서 접근해야 한다.
사용자가 알지 못하는 상태로의 접근은 불가능하게 된 것이다.
Settings Panel
Internet, Wi-Fi, NFC, Volume 등에 Settings Panel을 요청할 수 있다.
직접 켜는 건 불가능하고, 아래와 같이 코드를 포함하여 호출이 가능하다.
마무리
What’s New in Android에서 안드로이드 전반적인 걸 소개했는데, 필자가 관심 있는 내용들 위주로 위와 같이 정리하였다.
관련 영상도 추가해두었으니 필요하면 자세히 보는 게 좋다.
Comments