위의 영상을 요약한 내용입니다.


3가지 주제를 다룹니다.

  • 안드로이드 11의 다양한 기능
  • 플랫폼 외의 도구와 라이브러리
  • 더 많은 정보를 얻기 위한 리소스에 대한 내용

Window Insets

Window Insets은 화면에 대한 여러 정보를 가지고 있어, 같은 공간에서 컨텐츠가 잘 어우러지도록 할 수 있습니다. 예를 들어 키보드가 나오기 시작하면 화면 공간은 작아지고, 앱은 이에 반응해야 합니다.


이제는 기존 방식과는 다르게  WindowInset에서 네비게이션 및 상태 막대기나 키보드 정보를 제공하기 때문에, 키보드가 존재하는지 여부 또는 키보드 사이즈에 맞춰 뷰를 애니메이션화 하는 것들이 가능합니다.(영상 참조)

Conversation

안드로이드 11은 우리의 삶 속의 사람들에 대한 개념과 그들과 더욱 쉽게 교류할 수 있는 방법에 초점을 두었다고 합니다. 그중 하나가 바로 Conversation(대화)을 통한 것이죠.

앱을 이용하면 기존의 알림 시스템을 통해 정보를 전달할 수 있는데, 대화에 특화된 별개의 UI 공간에서 대화 관련된 정보를 담아두는 방식입니다.

Bubbles

Conversation과 밀접한 것이 바로 Bubble(버블)입니다. 스크린 샷 왼쪽에 동동 떠있는 아이콘이 버블입니다.

버블을 누르면 작은 액티비티를 띄워 바로 대화에 참여할 수 있습니다. 사용자는 휴대폰으로 무슨 일을 하든 간에 사람에 대한 이러한 정보에 접근하기가 수월해집니다.

버블의 특징

  • 버블은 과거에도 존재했지만, 개발자 옵션으로만 사용 가능했었습니다. Android 11부터는 누구나 사용하는 기능이 되었습니다. 
  • System Alert Window(시스템 경보 창) 말고 Bubble API를 사용하는 것을 추천합니다.

Privacy

DataAccess Auditing

앱 및 앱 종속 항목이 사용자의 비공개 데이터에 액세스하는 방식의 투명성을 높이기 위해 Android 11은 데이터 액세스 분석(Data Access Auditing)을 도입합니다. 이 프로세스에서 얻은 유용한 정보를 통해 잠재적으로 예상치 못한 데이터 액세스를 확인하고 수정할 수 있습니다. 

앱은 다음 이벤트 중 하나가 발생할 때마다 작업을 실행할 AppOpsManager.OnOpNotedCallback 인스턴스를 등록할 수 있습니다.

  • 앱의 코드가 비공개 데이터에 액세스합니다. 앱의 어떤 논리 부분에서 이벤트를 호출했는지 확인하려면 속성 태그별 데이터 액세스를 분석하면 됩니다.
  • 종속 라이브러리 또는 SDK의 코드가 비공개 데이터에 액세스합니다.

One-Time Permissions

안드로이드 11에서 새로운 개념의 권한이 등장했습니다. 앱이 위치, 마이크 또는 카메라와 관련된 권한을 요청할 때마다 사용자에게 표시되는 권한 대화상자에 이번만 허용(only this time)이라는 옵션이 포함됩니다. 사용자가 대화상자에서 이 옵션을 선택하면 임시 일회성 권한이 앱에 부여됩니다.

Background Location

Android 11에서는 앱이 백그라운드 위치 정보 액세스 권한을 요청할 수 있는 방법 및 사용자가 권한을 부여할 수 있는 방법이 변경되었습니다. 구체적인 변경사항은 앱의 타겟 SDK 버전에 따라 다르지만 Android 11에서 실행되는 모든 앱이 영향을 받습니다.

앱이 백그라운드에서 위치 정보에 액세스한다면 액세스가 필요한지 확인하고 다른 방법으로 앱에 필요한 정보를 얻는 것을 고려해야 합니다.  자세한 내용은 공식 문서를 참조

Foreground Services

Android 11은 포어그라운드 서비스에서 카메라 및 마이크와 관련된 데이터에 액세스하는 방법을 변경함으로써 사용자 보호를 강화합니다. 앱이 Android 11을 타겟팅하고 포그라운드 서비스에서 이러한 유형의 데이터에 액세스한다면 포그라운드 서비스 선언의 foregroundServiceType 속성에 새로운 camera 및 microphone 유형을 포함해야 합니다.

기타 사항

알아두어야 할 훨씬 더 많은 개인 정보 보호 변경 사항이 있습니다.

  • Package visibility restrictions :
    Android 11은 앱이 동일한 기기에 설치된 다른 앱을 쿼리하고 상호작용하는 방법을 변경합니다. 앱에서 Android 11을 타겟팅하는 경우 시스템에서 앱에 어떤 다른 앱이 표시되는지 알 수 있도록 앱의 매니페스트 파일에 <queries> 요소를 추가해야 할 수 있습니다.
  • Scoped Storage :
    Android 11에서는 플랫폼을 더욱 강화하여 외부 저장소의 앱 및 사용자 데이터를 보다 안전하게 보호합니다. 이러한 노력의 일환으로 플랫폼에는 범위 지정 저장소(Scoped Storage)로 쉽게 전환하도록 추가 개선사항이 도입됩니다.
  • Auto-reset permissions :
    사용자가 애플리케이션을 설치하고 실행할 때 권한을 승인하고 그 이후로 몇년간 앱을 실행하지 않는다면 앱이 권한이 가질 이유가 없습니다. 그러므로 권한을 자동으로 리셋 시켜버리고 애플리케이션이 다시 권한을 요청하는 기능이 추가되었습니다.

Wifi Debugging

개발자의 삶을 풍요롭게 해줄 Wifi Debugging 기능이 지원됩니다. Android studio 4.2부터 지원합니다.

Nullability Annotation

Android11의 SDK에서 Null관련 어노테이션에 변경사항이 생겼다.
Recenly가 접두어로 붙고, 붙지 않는 두가지 카테고리가 있다

  • RecentlyNullable, RecentlyNonNull -> Warning
  • Nullable, NonNull -> Error

Recently 어노테이션은 빌드시 경고 메시지를 출력하고, 그렇지 않은 Null어노테이션은 에러를 발생시킨다. 최근에 Nullable 정보가 없었던 메서드에 대해 @RecentlyNullable 또는 @RecentlyNonNull 애노테이션을 사용했다.

Crash Reasons Reporting

사용하는 앱에 왜 크래쉬가 발생하는지 상세하게 알려주는 API가 추가 되었습니다.

GWP-ASan

Android 11에서는 플랫폼과 앱에서 보안에 중요한 구성 요소를 강화하기 위한 다양한 도구를 사용합니다. DP3에서는 개발자가 메모리 안전 문제를 찾아서 수정하는 데 도움이 될만한 또 다른 방법으로 GWP-ASan을 추가합니다. GWP-ASan은 최소한의 오버헤드 또는 성능 영향으로 힙 메모리 오류를 감지하는 샘플링 할당 도구입니다. 플랫폼 바이너리와 시스템 앱에서 GWP-ASan을 기본적으로 실행되도록 했으며, 이제 앱에도 GWP-ASan을 사용할 수 있습니다. 앱에서 기본 코드 또는 라이브러리를 사용할 경우 GWP-ASan을 활성화해서 테스트를 최대한 빨리 테스트하는 것이 좋습니다.

ADB Incremental

개발 도중에 ADB(Android 디버그 브리지)로 매우 큰 APK를 설치하는 것은 느리고, 특히 Android Games에 관한 작업을 하는 개발자의 생산성에 영향을 미칠 수 있습니다. 하지만 Android 11의 ADB Incremental을 사용하면 개발용 컴퓨터에서 Android 11 기기에 2GB 이상의 큰 APK를 설치하는 속도가 최대 10배까지 더 빨라집니다. 이 새로운 개발자 도구를 사용하려면 먼저 새로운 APK 서명 체계 v4 형식으로 APK에 서명한 다음, Android 11 Preview SDK의 업데이트된 ADB 명령줄 도구로 APK를 설치하세요. 이 새로운 기능은 Android 기반의 게임 빌드에서 생산성을 더욱 높이기 위해 Google에서 투자하고 있는 광범위한 신규 도구 세트 중 일부입니다. DP3에서는 ADB Incremental이 기기 수준에서 필요한 파일 시스템 변경으로 인해 Pixel 4/4XL 기기에서만 작동합니다. Android 11로 출시하는 새로운 기기에는 이 변경 사항이 포함되며 ADB Incremental이 지원될 것입니다.

 

 

 

Behavior Changes

  • 대부분의 변경사항은 안드로이드 11(R)에만 영향을 끼칩니다.
  • 개발자 옵션에서 토글을 사용하거나 또는 커맨드 라인으로 Android 11 변경사항을 테스트 해볼 수 있다.

Graphics & Media

그래픽과 미디어에도 다양한 변화가 있다.

NDK Image Decoders

NDK 개발자라면 표준 파일 포맷에 대한 이미지 디코더가 아주 많기 때문에 JNI에 대한 업콜에서부터 Android SDK를 통한 다운 콜을 거쳐 이미지 디코딩을 위한 기본 코드가 무엇이었는지 확인해야 한다.

그래서 많은 개발자들이 자체적으로 디코더를 가지고 있는 또 다른 기본 라이브러리를 갖는데 그러면 두 개의 라이브러리를 갖게 되고, 플랫폼 디코더도 있고 추가로 제공하는 다른 디코더도 갖게 된다. 그러면 APK의 사이즈가 늘어나게 된다.

이제 NDK API를 직접 노출하여 디코더를 직접 사용할 수 있다.

Animated HEIF

Android11에서는 애니메이션화 된 HEIF 파일을 디코딩 하는 기능도 있다. AnimatedImageDrawable로 나타내며 HEIF파일이 전체적으로 GIF파일 보다 훨씬 더 작다는 점을 제외하고는 기존과 아주 유사하다.

NDK : OpenSL ES

오디오 개발자이자 NDK 개발자라면 OpenSL ES라고 하는 프로그램을 사용하실 수도 있습니다. 요즘엔 사용하지 않고 더 이상 권장하지 않는 프로그램입니다.

대신에, Oboe라는 오픈 소스 라이브러리를 사용하실 것은 권장합니다. Oboe의 특징은 다음과 같습니다.

  • C++ 개발자를 위한 라이브러리
  • 오픈소스
  • 높은 퍼포먼스의 오디오와 낮은 레이턴시 오디오
  • API16부터 사용 가능 

Variable Refresh rate

아주 오래전부터 모든 장치들은 초당 60프레임으로 동작했습니다. 프레임 설정에 필요한 모든 작업에 16.61 밀리 세컨드라는 시간이 소요된다는 뜻입니다.

만약 자체적인 렌더링 루프를 갖는 앱을 제작한다고 가정해보죠. 예를 들어 게임을 만드는데 일부 장치에서 가능하며 초당 60프레임을 지속할 수 없는 작업이 너무 많다고 하면 다음 프레임 버려야한다. 기본적으로 리프레시 비율의 경우에도 초당 30 프레임만 사용하게 되는데 더 높은 리프레시 비율이 가능한, 시장에 출시된 새로운 기기들은 90Hz, 심지어 초당 130 프레임까지 속도가 나온다. 더 빠르게 작업할 수 있는 것뿐만 아니라 사용자는 화면을 더 빠르게 업데이트 할 수 있다. 하지만 백오프 비율에 더 많은 변동이 생길 수 있다. 이제 Surface.setFrameRate() 같은 메서드를 통해 프레임 비율을 설정하는 것이 가능하다.

 

Neural Networks API

머신 러닝 프로그램의 신경망 API는 다음과 같은 변경사항을 갖습니다.

  • 장치 상의 머신 러닝에 대한 C 개발자를 위한 API제공
  • 성능과 기능에 중점을 둔 NNAPI 1.3 버전이 출시될 예정입니다. 

5G

더 높은 수준의 환경과 해상도를 제공하기 위해 네트워크 상태와 대역폭을 측정할 수 있는 API가 제공됩니다.

Autofill/ Keyboard Integeration

Autofill 을 통해 안전한 방식으로 자동 채움 기능을 제공합니다.

Android Jetpack

의존성 주입 라이브러리(Hilt)와 Paging 3.0, CameraX 등 여러 라이브러리 들이 추가되고 개선 되었습니다.

 

Jetpack Compose

Android의 새로운 UI툴킷으로 현재 활발히 개발 중에 있습니다. 반응형이며 코틀린 기반입니다.

Android Studio 

  • Android Studio 4.0출시
  • 모션 에디터 기능 추가
  • 레이아웃 인스펙터 개선
  • Android Studio 4.1 베타에서는 데이터베이스 인스펙터가 추가됩니다.
  • Android Studio 4.2에서는 안드로이드 11기기와 무선 디버깅이 가능합니다.
  • Jetpack Compose를 이용하기 위해서는 Canary버전을 사용하면 됩니다.

Google Play

플레이 콘솔을 완전히 새로 제작했습니다. 더 나은 디자인과 이해 및 접근을 더 쉽게 해주는 제품에 대한 것이지만, 그 과정에서 대시보드 정보에 접근하는 팀 관리 및 사용자 유치에 대한 보고서와 정책 상태 항목처럼 새로운 기능들도 추가했습니다.

Buy me a coffeeBuy me a coffee
카테고리: AlphaAndroid

1개의 댓글

익명 · 2020년 6월 22일 3:58 오후

깔끔하게 정리 잘되어 있어서 보기 좋네요.
스틸컷이 웃긴 모습도 있어서 ㅋㅋㅋ

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.