안드로이드 공식 블로그를 참조하고 주요내용을 번역한 글 입니다.
오역 및 의역이 다수 있을 수 있습니다.

출처 : https://android-developers.googleblog.com/2018/08/introducing-android-9-pie.html

 

 

작년 8월 오레오를 발표로 1년만인 2018년 8월 6일 코드네임 ‘파이’가 새로운 안드로이드 버전이 발표 되었습니다. 파이 발표와 함께 업그레이드가 지원되는 폰은 구글 픽셀 시리즈와 Essential Phone 두 종류 입니다.

오레오를 시작으로 구글은 모바일 머신러닝에 초점을 두고 있는 것 같습니다. 신경망 API 공개, Firebase의 MLkit등을 보면 구글이 추구 하는 모바일시장의 미래가 대충 머릿속에 그려집니다.

What’s in Android 9?

머신러닝과 함께하는 더 똑똑 해진 스마트폰

안드로이드 9은 사용자의 사용패턴을 학습하여, 자동으로 설정값을 선택하거나 조정하는것을 도와줍니다. 사용자가 자주 사용하는 앱의 최적의 위치로 이동하여 배터리를 아낄수 있게 하고 일처리를 매끄럽게 오랫동안 유지 합니다.

Adaptive Battery

DeepMind와 제휴하여 적응형 배터리(Adaptive Battery)라는 기능을 사용했습니다. 이 기능은 기계 학습을 사용하여 사용자가 가장 염려하는 앱의 시스템 리소스에 우선 순위를 매깁니다. 애플리케이션이 Doze, 앱 대기상태 및 백그라운드 제한 사항에 맞게 최적화 되어 있으면 적응형 배터리를 즉시 사용할 수 있습니다. 만약 아직 앱을 최적화하지 않은경우 전원에 대한 세부 문서 정보를 확인하여 작동 원리를 확인하시기 바랍니다.

Slices

Slices는 전체화면 외부에서 참여를 유도하여 사용자들의 작업을 빠르게 수행하는데 도움을 줍니다. 이 작업은 구글 검색 앱 내에서나 나중에 Google Assistant와 같은 다른 장소에서 앱의 풍부하고 동적인 대화형 콘텐츠를 표시 할 수 있는 UI템플릿을 나타냅니다. Slices에 대한 정보는 이 문서를 참조하세요

App Actions

App Actions는 앱의 가시성을 높이고 참여를 유도하는 새로운 방법입니다. 액션은 머신러닝을 이용하여, 적시에 문맥과 의도를 파악하여 사용자에게 앱을 보여줍니다. 

텍스트 분류 그리고 스마트 링크화

TextClassfier API를 통해 콘텐츠속에서 어떤 실체를 식별한다거나 날짜 또는 비행 번호와 같은 항목을 입력하는 ML 모델로 확장해왔습니다. 스마트 링크화(Smart Linkify)를 사용하면 빠른 후속 사용자 작업을 위한 풍부한 옵션을 비롯하여 Linkify API를 통해 TextClassifier 모델을 활용할 수 있습니다. Smart Linkify는 또한 성능뿐만 아니라 탐지의 정확성을 크게 향상 시킵니다.

신경망(Neural Networks) API 1.1

안드로이드 9에서는 신경망 API의 업데이트 된 버전이 추가되어 가속화된 머신러닝 디바이스를 지원합니다. 신경망 1.1은 Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub 및 Squeeze의 9 가지 새로운 연산에 대한 지원을 추가합니다. API를 이용하는 일반적인 방법은 TensorFlow Lite를 이용하는 것입니다.

스마트폰을 최대한 활용하자, 더 쉽게

구글은 스마트폰을 더 똑똑하게 만드는것에 열중하고 있습니다. 그러나 이 기술이 사용자들에게 뒤떨어져있다는게 현실입니다. 안드로이드 9에서는 안드로이드의 UI를 더욱 간단하고 친숙해 질 수 있도록 발전 시켰습니다. 개발자는 이러한 변경을 통해 사용자가 앱을 찾고, 사용하고, 관리하는 방법을 개선 시킬 수 있습니다.

새로운 시스템 네비게이션

안드로이드 9 은 새로운 시스템 네비게이션 1년 넘게 소개해왔습니다. 새로운 디자인은 안드로이드 멀티태스킹을 좀더 접근하기 쉽고 앱을 발견하기 쉽게 도와줍니다. 어디서든 위로 화면을 밀어(Swipe-Up) 최근에 사용한 앱들의 전체 화면을 미리볼수 있고 이들중 하나를 탭하여 간단하게 다시 열어 볼수도 있습니다.

디스플레이 Cutout (노치 대응)
안드로이드 9에서는 디스플레이 컷아웃 지원을 통해 화면 최근 베젤이 없는 화면(edge-to-edge)의 이점을 최대한 살릴 수 있습니다. 대부분의 앱들에서 컷아웃을 지원하는 시스템은 상태표시줄 높이를 관리하여 컷아웃에서 콘텐츠를 분리할 수 있도록 디스플레이 컷아웃을 완벽하게 지원합니다.  만약 몰입형 콘텐츠를 가지고 있다면 컷아웃 API를 통해 컷아웃의 위치 및 모양을 확인하고 주변에 전체화면 레이아웃을 요청할 수 있습니다. 개발 및 테스트를 돕기위해 개발자옵션에서 모든 장치에 여러 개의 컷아웃 모양을 시뮬레이션할수 있는 기능을 추가 하였습니다.

알림 및 스마트 답장(Notifications and smart reply)

안드로이드 9은 알림(Notification)을 좀더 유용하고 활용할 수 있도록 만들었습니다. 메시지 앱에서 새로운 MessagingStyle API의 장점을 활용하여 대화를 나타낼수 있고, 사진이나 스티커를 첨부할 수 있습니다. 십지어 스마트 답장(Smart reply)을 제안하기도 합니다. 아직은 아니지만 곧 MLkit를 이용하여 스마트 답장 기능을 이용하실 수 있습니다.

텍스트 돋보기(Text Magnifier)

안드로이드9에서는 Magnifier 위젯을 추가했습니다. 이를 통해 선택한 텍스트의 사용자 경험을 증대할수 있습니다. Magnifier위젯은 사용자가 커서에 정확하게 위치 시키고 드래그가능한 텍스트영역을 선택하면 확대하여 보여줍니다. 윈도우에 붙어있는 어떤 뷰에건 Magnifier위젯을 붙일 수 있고, 커스텀 위젯 또는 커스텀 텍스트 렌더링 내에서도 사용할 수 있습니다. Magnifier위젯은 텍스트뿐만 아니라 또한 줌인된 버전의 뷰나 서피스(surface)를 제공합니다. 

자세한 내용은 블로그내용을 확인해보세요.

보안과 사용자 개인정보

생체인식 프롬프트(Biometric prompt)

인증에 사용되는 다양한 생체 인식 센서를 사용하여 센서타입 및 앱 전반적으로 일관된 경험을 제공하고 자 했습니다. 안드로이드 9은 시스템 다이얼로그와 함께 지원가능한 모든 유형의 생체인증을 제공합니다. 앱은 더이상 자체적으로 다이얼로그를 만들필요가 없으며, 대신에 BiometricPrompt API를 사용하여 표준 시스템 대화 상자를 표시합니다. 지문인식(디스플레이에 내장된것 포함)외에도 얼굴 및 홍체 인증을 지원합니다.

보호된 확인(Protected Confirmation)

안드로이드 9은 신뢰할 수 있는 실행 환경(TEE)을 사용하는 Android Protected Confirmation을 도입하여 주어진 프롬프트 문자열이 사용자에게 표시되고 확인되도록 합니다. 사용자 확인이 성공한 후에야  TEE는 앱이 확인할 수 있는 프롬프트 문자열에 서명을 하게 됩니다.

더 강력한 개인키 보호(Stronger protection for private keys)

StrongBox를 새로운 KeyStore 타입으로 추가하여 격리 된 CPU, RAM 및 보안 플래시로 변조 방지 하드웨어에 키 저장소를 제공하는 장치에 대한 API지원을 제공합니다.
KeyGenParameterSpec에서 StrongBox 보안칩으로 키를 보호해야하는지 여부를 설정할 수 있습니다.

TLS를 통한 DNS 

안드로이드 9에서는 DNS서버가 TLS를 지원할 경우 자동으로 DNS쿼리를 TLS로 업그레이드 하는 DNS Over TLS를 지원합니다. 사용자는 네트워크 및 인터넷 설정의 새 사설 DNS 모드에서 TLS동작에 대한 DNS를 관리 할 수 있습니다. 자체 DNS 쿼리를 수행하는 앱은 새로운 API 인 LinkProperties.isPrivateDnsActive() 메소드를 사용하여 DNS 모드를 확인할 수 있습니다.

HTTPS가 기본값!

암호화 되지 않은 HTTP에서 HTTPS로 보호되는 웹사이트로 모든 네트워크 트래픽을 이동하려는 노력의 일환으로 네트워크 보안 구성의 기본값을 변경하여 모든 일반 텍스트 트래픽을 차단합니다. 특정 도메인에 대해 일반 텍스트를 명시적으로 선택하지 않는 한 TLS를 통해 연결해야합니다.
자세한 내용은 여기를 참조해주세요

컴파일러 기반의 보안 완화

안드로이드9에서는 위험한 동작을 런타임에 감지하여 플랫폼을 강화하기 위해 컴파일러 수준의 완화 방법을 추가했습니다. CFI(Control Flow Integrity – 제어 흐름 무결성) 기술은 코드 재사용 공격 및 임의 코드 실행을 방지합니다. 안드로이드 9 에서 우리는 미디어 프레임워크 및 NFC 그리고 블루투스와 같은 기타 보안에 중요한 구성 요소 내에서 CFI를 적용했습니다. 또한 LLVM으로 빌드 할 때 안드로이드 공용 커널에 CFI커널 지원을 도입했습니다.

Integer Overflow Sanitizer(정수형 오버플로 제거자)를 사용하여 메모리 손상 및 정보 유출 취약점을 완화했습니다. 지난 취약성이 있거나 libui, libnl, libmediaplayerservice 및 기타와 같이 복잡한 신뢰할 수 없는 입력이 처리되는 라이브러리의 위생 처리자에 우선 순위를 매겼습니다. 자세한 내용은 이 게시물을 참조하십시오.

사용자의 개인정보

안드로이드 9에서는 유휴상태인 앱에서 마이크, 카메라 및 모든 센서에 대한 액세스를 제한합니다. 앱의 UID가 유휴 상태일 때 마이크가 빈오디오를 리포팅하며 센서들은 이벤트를 리포팅하는것을 멈춥니다. 앱에서 사용하는 카메라는 연결이 끊어지고 앱에서 사용하려고 하면 오류가 발생합니다. 대부분의 경우 이러한 제한으로 인해 기존 앱에 새로운 문제가 발생하지는 않지만 앱에서 이러한 요청을 삭제하는것을 권장합니다.

안드로이드9은 또한 사용자에게 플랫폼의 build.serial 식별자에 대한 접근 권한을 READ_PHONE_STATE 권한 뒤에 놓았습니다. build.serial 식별자에 접근하기 위해서는 Build.getSerial()메소드를 이용하면 됩니다.

더 자세한 정보는 이곳을 참조하세요.

카메라, 오디오, 그래픽스와 함께하는 새로운 경험들

멀티 카메라 API 그리고 기타 카메라 업데이트

안드로이드 9과 함께 멀티 카메라 API를 지원하는 장치에서 두개 이상의 물리적인 카메라의 스트림을 동시에 열 수 있습니다. 전면 듀얼 또는 후면 듀얼 카메라가 있는 장치의 경우 완벽한 줌, 보케(bokeh) 및 스트레오 비전과 같은 단일 카메라로는 불가능한 혁신적인 기능을 만들 수 있습니다. API를 사용하면 두 개 이상의 카메라를 자동으로 전환하는 논리 또는 융합 카메라 스트림을 호출 할 수 있습니다.

카메라의 다른 개선 사항으로는 초기 캡처 중 지연을 줄이는 데 도움이 되는 새로운 세션 매개 변수와 카메라 스트리밍을 중지하고 시작할 필요없이 카메라 클라이언트가 다양한 유즈케이스를 처리 할수 있게 해주는 서피스(Surface) 공유가 있습니다. 또한 디스플레이 기반의 플래시 지원을 위한 API와 앱 레벨 이미지 안정화 및 특수 효과를 위한 OIS 타임 스탬프에 대한 접근을 추가했습니다.

HDR VP9 Video 코덱과 HEIF image 압축

안드로이드 9에서는 HDR VP9 프로파일2에 대한 기능이 내장되어있어 HDR지원 장치를 통해 HDR 지원 동영상을 제공합니다.

HEIF는 압축률을 향상시켜 저장 장치 및 네트워크 데이터를 절약 할 수 있는 포맷입니다. 안드로이드9에서 플랫폼을 지원하므로 백엔드 서버에서 HEIF이미지를 보내고 사용하기 쉽습니다. 공유 및 표시를 위해 앱이 데이터 형식과 호환되는지 확인한 후 HEIF를 앱의 이미지 저장형식으로 사용해보세요. ImageDecoder 또는 BitmapFactory를 사용하여 jpeg에서 비트맵을 얻고 jpeg에서 heic로 변환 할 수 있으며 AndroidX 라이브러리에서 HeifWriter를 사용하여 YUV버퍼와, Surface, 비트맵으로 부터 HEIF형식의 스틸이미지로 저장할 수 있습니다.

다이나믹 프로세싱으로 향상된 오디오 

Dynamics Processing API은 새로운 오디오 효과를 사용하여 특정 주파수를 분리하고 큰소리를 낮추거나 부드러운 소리를 늘려 앱의 음질을 향상시킬 수 있습니다. 예를 들어 시끄럽거나 멀리 있거나 또는 음향적으로 어려운 환경에서 조용히 말하는 사람의 소리를 향상 시킬 수 있습니다. API를 사용하면 프리 이퀄라이저, 멀티 밴드 컴프레서, 포트 이퀄라이저 및 링크 된 리미터가 포함된 다단계 멀티 밴드 다이나믹 프로세싱 이펙트에 접근할 수 있습니다.

Bitmap과 Drawable을 위한 ImageDecoder 

ImageDecoder API는 쉬운방법으로 이미지를 디코딩하여 비트맵 또는 drawable로 변환해줍니다. 바이트 버퍼나 파일 또는 URI로 부터 비트맵을 만들수도 있습니다. ImageDecoder API는 BitmapFactory보다 몇몇 좋은점들을 제공합니다. 예를들면 이미지를 확대 축소한다거나 , 하드웨어 메모리에서 single-step 디코딩을 한다거나, 디코딩 후처리 지원한다거나, 애니메이션있는 이미지들을 디코딩하는것들을 지원합니다.
자세한 내용을 이곳을 읽어보세요.

연결성 그리고 위치

실내 측위를 위한 Wi-fi RTT

안드로이드 9을 사용하면 IEEE 802.11mc 와이파이 프로토컬에 대한 플랫폼 지원을 통해서 실내 측위 기능을 이용할 수 있습니다. 하드웨어 지원, 위치 권한 및 위치가 활성화 된 기기에서 앱은 RTT API를 이용하여 근처 AP까지의 거리를 측정 합니다. RTT를 사용하기 위해 AP에 연결할 필요가 없으며 보안을 위해 안드로이드만 AP의 거리를 측정하며, AP는 측정할 수 없습니다.

3개이상의 AP와의 거리를 알면 삼각측량을 통해  1~2미터의 정확도로 위치를 계산하며, 이를 이용하여 건물 내 탐색과 같은 유즈케이스를 만들수 있습니다. 예를들어 실내의 조명을 켠다거나, 특정위치로 이동했을때 상품에 대한 광고를 노출 시킬 수 있습니다.

JobScheduler에서의 데이터 소모 민감도

JobScheduler는 작업을 스케쥴링 하거나 Doze모드나 앱대기상태 그리고 백그라운드제한에서 작업을 수행하는것을 돕는 안드로이드의 중심적인 서비스이다. 안드로이드 9에서 JobScheduler는 통신 사업자가 별도로 제공하는 네트워크 상태 신호로 조정하여 사용자에 대해 네트워크 관련 작업을 보다 잘 처리합니다. Jobs는 예상 데이터 크기,신호 프리 패치 그리고 상세한 네트워크 요구사항을 지정할 수 있습니다. 네트워크가 느리거나 신호가 잡히지 않을때 리포팅을 할수 있습니다. 그런다음 JobScheduler 네트워크 상태에 따라 작업을 관리합니다. 예를들어 네트워크가 느려지면 JobScheduler가 사이즈가 큰 네트워크 요청을 지연 시킬수 있습니다. 측정되지 않을때는 프리 페치 작업을 실행하여 헤드라인 프리패치같은 사용자 경험을 향상 시킬수 있습니다.

NFC결제와 보안 트랜잭션을 위한 Open 모바일 API

안드로이드 9에서는 글로벌플랫폼 오픈 모바일 API의 구현을 추가했습니다. 지원되는 기기에서 앱은 OMAPI API를 사용하여 스마트 카드 지불 및 기타 보안 서비스를 사용하기 위해 보안 요소에 액세스 할 수 있습니다. 하드웨어 추상화 계층(HAL)은 사용 가능한 다양한 보안요소를 열거하기 위한 기본 API를 제공합니다.

앱 퍼포먼스

ART 퍼포먼스

안드로이드9에서 ART런타임을 통해 모든앱의 성능 및 효율성을 향상시켰습니다. ART의 실행 프로필 사용하여 앱을 최적화하고 컴파일 된 애플리케이션 코드의 메모리 내 설치 공간을 줄였습니다. 이제 ART는 장치에서 DEX파일의 재작성을 위해 프로필 정보를 사용합니다. 인기있는 앱들의 경우 최대 11%까지 줄일 수 있었습니다. 이런것들이 DEX메모리 사용량의 감소와 앱의 빠른 시작이 되길 기대합니다.

코틀린의 최적화

코틀린은 안드로이드 최고의 언어입니다. 아직 사용하지 않는다면 꼭 사용해보시기 바랍니다. 구글은 안드로이드용 코틀린에 지속적인 노력을 기울였으며 코틀린 코드의 성능 최적화를 비롯한 지속적인 지원을 확대해왔습니다. 안드로이드9에서 이 작업의 첫 번째 결과물을 보실수 있습니다. 여러 컴파일러 최적화, 특히 더 나은 성능을 추출하기 위해 반복작업을 하는것을 대상으로 최적화를 개선했습니다. 또한 JetBrains와 협력하여 Kotlin의 생성된 코드를 최적화하기 위해 계속 노력하고 있습니다. 안드로이드 스튜디오의 코틀린 플러그인을 최신상태로 유지하면 코틀린의 모든 기술을 이용하실 수 있습니다.

최신 안드로이드

안드로이드9의 일부로 보안, 성능 및 안정성에 대한 강력하고 지속적인 투자의 일환으로 안드로이드 기반과 그 위에 실행되는 앱을 최신화하고 있습니다.

작년에 발표한 바와 같이 Google Play에 등록된앱은 반드시 2018년 11월 까지 API26버전을 반드시 지원해야합니다. 안드로이드 API17보다 빠른 플랫폼을 대상으로 하는 앱의 경우, 앱을 처음 실행할 때 경고 대화 상자가 표시됩니다. 마이그레이션 할 때 도움과 지원을 받을 수 있는 리소스에 대한 체크리스트가 있으니 최신Android를 최대한 활용하여 앱을 개발하기를 기대합니다.

안드로이드 9 위한 앱개발 준비!

안드로이드 9을 위한 호환성을 위해 빨리 앱을 테스트 하는것이 중요합니다. 안드로이드 9을 실행하는 기기 또는 에뮬레이터에서 앱을 설치하기만 하면됩니다. 흐름을 따라 가면서 앱이 실행되고 멋지게 보이는지 확인합시다!

또한 앱에서 SDK가 아닌 인터페이스를 사용하는지 살펴보세요. Android9은 비 SDK인터페이스에 대한 접근을 제한하므로 개발자가 SDK인터페이스에 의존하지 않아야 합니다. 자세한내용은 이곳을 참조하세요.

필요한 업데이트를 수행한 뒤에 Google Play에 게시하는 것이 좋습니다. 앱의 플랫폼 타겟팅을 변경하지 않고 Android 9 API 및 타겟팅을 사용하여 앱을 개선하는 동안 Android 9 사용자에게 훌륭한 경험을 보장 할 수 있습니다.

 

안드로이드 9 기능들과 API로 당신의 앱을 향상시키세요!

준비가 되었다면, 안드로이드 9로 빠져들어 안드로이드9의 새로운 기능과 API로 빌드를 하세요.

공식 API 28 SDK와 최신 도구 및 에뮬레이터 이미지를 사용하려면 Android Studio 3.1이상으로 다운로드만 하면됩니다. 그런 다음 프로젝트의 compileSdkVersion및 targetSdkVersion을 API28로 업데이트하십시오. 타겟팅을 변경할 때 앱이 적용 가능한 모든 동작 변경 사항을 지원하는지 확인하세요.

준비가되면 바로 APK 업데이트를 Google Play에 게시하세요. 일반적인 전략으로는 Google Play에 베타 테스트 기능을 사용하여 소규모 사용자 그룹으로부터 빠른 피드백을 얻은 다음 프로덕션으로 단계적 출시를 하는 것입니다.

자세한 내용과 개발자 설명서를 보려면 Android 9 사이트를 방문하세요

 

 

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

0개의 댓글

답글 남기기

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