반응형
출처 - https://developers-kr.googleblog.com/2018/03/previewing-android-p.html
<블로그 원문은 이곳에서 확인하실 수 있으며 블로그 번역 리뷰는 김태호(Google)님이 참여해 주셨습니다>
게시자: Dave Burke, 엔지니어링 부사장
지난 주 열린 Mobile World Congress에서 안드로이드 생태계의 개발자, 기기 제조업체 및 반도체 파트너는 전세계 사용자들에게 놀라운 경험을 선보였습니다.
앞으로 안드로이드가 나아갈 방향을 알아보기 위해, 최신 안드로이드 버전인 Android P의 첫번째 개발자 프리뷰 버전에 대해 알아보겠습니다. 이 프리뷰는 개발자들만을 위한 초기 버전이며, 여러분은 저희가 가장 신뢰하는 리뷰어이자 테스트 참가자입니다. 개발자 커뮤니티에서 보내주는 초기 피드백은 저희가 여러분의 필요로 하는 플랫폼을 만드는 데 큰 도움이 될 것입니다. 먼저 P의 새로운 기능과 API에 대해 알아보겠습니다. 언제나 그렇듯이 의견이 있으시면 저희에게 보내주세요. 여러분의 피드백과 아이디어는 저희에게 중요합니다.
앱에 적용해 볼 만한 새로운 기능들
Wi-Fi RTT를 이용한 실내 위치추적
실내에서의 정확한 위치 추적은 위치 기반 서비스의 새로운 지평을 여는데 꼭 필요하지만, 오랫 동안 해결하지 못하고 있던 숙제였습니다. Android P에서는 WiFi RTT(Round-Trip-Time)라고도 불리는 IEEE 802.11mc WiFi 프로토콜을 지원하므로, 앱에서 실내 위치추적을 활용할 수 있습니다.
실내 위치 추적을 위해 필요한 하드웨어와 위치 권한이 있고, 위치 정보 사용이 활성화된 Android P 기기에서, 여러분의 앱은 RTT API를 사용하여 주변 WiFi 액세스 지점(AP)까지의 거리를 측정할 수 있습니다. RTT 사용을 위해 기기가 AP에 연결될 필요는 없으며, 개인정보 보호를 위해 휴대폰만 거리를 판별할 수 있고 AP는 거리를 판별할 수 없습니다.
3개 이상의 AP에 대한 거리를 알고 있다면 1 ~ 2미터의 정확도로 기기 위치를 계산할 수 있습니다. 이러한 정확도를 이용하면 건물 내 탐색, 명확한 음성 제어와 같이 상세한 위치를 기반으로 하는 서비스(예: '이 조명을 켜세요') 와 정보(예: '이 상품에 특별 할인이 있나요?')와 같은 새로운 경험을 구현할 수 있습니다.
디스플레이 컷아웃 지원
이제 앱이 최신 기기 화면에서 전체 화면 콘텐츠를 완벽히 활용할 수 있습니다. API와 함께 플랫폼에 추가된 디스플레이 컷아웃 지원을 사용하면 콘텐츠가 표시되는 방식을 제어할 수 있습니다.
컷아웃 지원은 앱에서 매끄럽게 작동하며, 시스템은 상태 표시줄 높이를 관리하여 콘텐츠를 컷아웃으로부터 구분합니다. 중요한 몰입형 콘텐츠가 있는 경우에는 또한 새로운 API를 사용하여 컷아웃 모양을 확인하고 그 주변에 전체 화면 레이아웃을 요청할 수 있습니다. getDisplayCutout()를 호출한 다음, DisplayCutout을 사용하여 컷아웃 영역의 위치와 모양을 판별하는 방식으로 현재 기기에 컷아웃이 있는지 여부를 확인할 수 있습니다. 새로운 창 레이아웃 속성인 layoutInDisplayCutoutMode는 컷아웃 영역에 맞게 콘텐츠를 배치하는 방법과 시기를 시스템에 알려줍니다. 자세한 내용은 여기를 참조하세요.
앱에서 컷아웃 지원을 더욱 쉽게 빌드하고 테스트할 수 있도록, 모든 기기에서 컷아웃을 시뮬레이션하는 개발자 옵션을 추가했습니다. 콘텐츠가 올바로 표시되도록 보장하려면 디스플레이 컷아웃을 활성화하고 기존 앱을 테스트하는 것이 좋습니다.
몰입형 콘텐츠가 있는 앱은 디스플레이 컷아웃을 사용하여 콘텐츠를 전체 화면으로 표시할 수 있습니다.
개선된 메시지 알림
Android P에서는 알림의 가시성과 기능을 개선하는 데 우선순위를 두었습니다. 새로운 MessagingStyle 알림 스타일을 사용해 보세요. 이 스타일은 누가 메시지를 보내는지, 어떻게 회신할 수 있는지를 강조 합니다. 대화를 표시할 수 있고, 사진과 스티커를 첨부할 수 있으며, 스마트 회신을 제안할 수도 있습니다. 자세한 내용은 여기를 참조하세요.
이제 MessagingStyle 알림에서 대화와 스마트 회신을 표시할 수 있고[왼쪽] 이미지와 스티커를 첨부할 수도 있습니다[오른쪽].
멀티 카메라 API
이제 Android P가 실행 중인 기기에서 두 대 이상의 물리적 카메라로부터 동시에 스트림에 액세스할 수 있습니다. 듀얼 전방 카메라나 듀얼 후방 카메라가 달린 기기에서, 한 대의 카메라로는 불가능한 혁신적인 기능을 구현할 수 있습니다(예: 매끄러운 확대/축소, 보케 및 스테레오 비전). 이 API를 사용하여 두 대 이상의 카메라를 자동으로 전환하는 논리적 카메라 스트림이나 합성된 카메라 스트림을 호출할 수도 있습니다. 앞으로 1년 내에 여러 대의 카메라를 지원하는 Android P 기기가 시장에 출시될 예정이므로 여러분이 만든 멋지고 새로운 창작품을 기대해 보겠습니다.
카메라의 기타 개선 사항으로는 새로운 Session 매개변수와 Surface 공유가 있습니다. Session 매개변수는 초기 캡처 중에 지연을 줄여주는 역할을 하며, Surface 공유는 카메라 클라이언트가 카메라 스트리밍을 중단/시작하지 않고도 다양한 작업을 처리할 수 있도록 해줍니다. 또한 디스플레이 기반의 플래시 지원을 위한 API를 추가했고, 앱에서 이미지 흔들림 보정 및 특수 효과를 처리하기 위한 OIS 타임스탬프 액세스 기능을 추가했습니다.
Bitmap 및 Drawable용 ImageDecoder
Android P는 이미지를 Bitmap이나 Drawable로 더욱 쉽게 디코딩할 수 있도록 ImageDecoder를 지원하며, 이제 BitmapFactory는 지원이 중단됩니다. ImageDecoder를 사용하면 바이트 버퍼, 파일 또는 URI로부터 Bitmap이나 Drawable을 만들 수 있습니다. ImageDecoder는 정확한 배율 조정 지원, 하드웨어 메모리에 대한 단계별 디코딩, 디코딩에서 후처리 지원, 애니메이션 이미지 디코딩 등 BitmapFactory보다 더 좋은 기능을 제공합니다.
이미지를 특정 크기로 디코딩하려면 setResize()를 호출하기만 하면 됩니다. 이미지를 샘플링 처리하려면 getSampledSize()를 호출하면 됩니다. 이미지에 후처리가 필요한 경우 경우(예: 원형 마스크에 둥근 모서리나 더 복잡한 효과 적용) android.graphics.PostProcessor를 ImageDecoder에 전달할 수 있습니다. 또한 ImageDecoder.decodeDrawable()을 사용하여 드로어블을 직접 만들 수도 있습니다. 인코딩된 이미지가 애니메이션 GIF 또는 WebP인 경우, Drawable은 AnimatedImageDrawable의 인스턴스가 됩니다.
HDR VP9 동영상, HEIF 이미지 압축, 미디어 API
Android P에서는 HDR VP9 프로필 2를 기본적으로 지원하므로 HDR 가능 기기에서 사용자에게 YouTube, Play Movies 및 기타 소스의 HDR 가능 동영상을 제공할 수 있습니다.
HEIF(heic) 이미지 인코딩을 플랫폼에 추가하게 되어 기쁘게 생각합니다. HEIF는 사진에 널리 사용되는 형식이며, 압축 성능을 개선하여 저장 공간과 네트워크 데이터를 절약합니다. Android P 기기의 플랫폼 지원 덕분에, 백엔드 서버로부터 HEIF 이미지를 쉽게 전송하고 활용할 수 있습니다. 앱에서 이미지를 공유하거나 표시할 때 HEIF 이미지를 사용해도 문제가 없는 것을 확인했다면 앱의 이미지 저장 형식으로 HEIF를 사용해 보세요. jpeg 이미지를 heif로 변환하려면 ImageDecoder 또는 BitmapFactory를 사용하여 jpeg 이미지의 비트맵을 얻고, 새로운 서포트 라이브러리의 알파 버전에 포함된 HeifWriter를 사용하면 됩니다. HeifWriter는 YUV 바이트 버퍼, Surface 혹은 비트맵을 HEIF 이미지로 기록할 수 있습니다.
또한, 더욱 쉬운 개발과 통합을 위해 미디어 API를 개선하고 리팩토링하고 있습니다. 올해 후반기에 나올 세부사항을 참조하세요.
JobScheduler의 데이터 비용 민감도
JobScheduler는 Doze, 앱 대기 및 백그라운드 제한 변경사항에서 백그라운드 작업 혹은 예약된 작업을 관리해주는 안드로이드의 핵심 서비스입니다. Android P에서 JobScheduler는 사용자를 대신하여 네트워크 관련 작업을 원활히 처리해 주며, 이동통신사에 의해 개별적으로 제공되는 네트워크 상태 신호를 조정합니다.
이제 작업(JobInfo)이 예상 데이터 크기를 선언하고, 프리페칭 신호를 보내고, 상세한 네트워크 요구사항을 지정할 수 있습니다. 이동통신사는 네트워크의 자세한 상태 정보(혼잡, 데이터 비용 과금 없음 등)를 알려줄 수 있으며, JobScheduler는 이상태에 따라 작업을 관리합니다. 예를 들어, 네트워크가 혼잡한 경우 JobScheduler는 크기가 큰 네트워크 요청을 연기할 수도 있습니다. 데이터 비용이 과금되지 않는 상태일 경우에는 사용자 환경을 개선하기 위해 프리페칭 작업(예: 주요 항목을 미리 불러옴)을 실행할 수 있습니다.
작업을 추가할 때 JobScheduler가 올바로 작업을 처리할 수 있도록 setEstimatedNetworkBytes(), setIsPrefetch() 및 setRequiredNetwork()를 사용해 보세요. 작업이 실행되는 경우에는 JobParameters.getNetwork()에 의해 반환된 Network 객체를 사용하세요. 그렇지 않으면 기기의 기본 네트워크가 암시적으로 사용되며 이 경우 요구사항이 충족되지 않을 뿐더러 원치 않게 데이터를 사용하게 될 수도 있습니다.
Neural Networks API 1.1
안드로이드 기기에서의 머신 러닝을 가속화하기 위해 저희는 Android 8.1에서 Neural Networks API를 소개했습니다. Android P에서는 이 API를 확장하고 개선하는 중이며 9개의 새로운 연산(Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub 및 Squeeze) 지원을 추가하는 중입니다. Pixel 2 기기의 경우, DP1 빌드에 양자화 모델을 가속화하는 Qualcomm Hexagon HVX 드라이버가 포함됩니다.
자동 완성(Autofill) 개선
Android P에서는 사용자와 개발자의 피드백을 통해 자동 완성 프레임워크를 끊임없이 개선하고 있습니다. 이번 릴리스에는 주요 버그 수정과 함께 새로운 API가 포함되며 이를 통해 비밀번호 관리자가 자동 완성 사용자 경험을 개선할 수 있습니다(예: 더 나은 데이터세트 필터링, 입력 삭제 및 호환성 모드). 특히 호환성 모드는 최종 사용자에게 큰 영향을 미칩니다. 왜냐하면, 이 모드에서는 아직 완전한 자동 완성 지원이 없는 앱에서 비밀번호 관리자가 접근성 기반 방식을 취할 수 있지만 성능이나 보안에는 영향이 없기 때문입니다. 새로운 기능에 대한 모든 자세한 내용은 여기를 참조하세요.
NFC 결제 및 보안 트랜잭션을 위한 Open Mobile API
Android P에서는 GlobalPlatform Open Mobile API 구현을 안드로이드에 추가합니다. 지원되는 기기에서 스마트 카드 결제 및 기타 보안 서비스를 활성화하기 위해, 앱이 OMAPI API를 사용하여 보안 요소(SE)에 액세스할 수 있습니다. HAL(하드웨어 추상화 계층)은 사용 가능한 다양한 보안 요소(eSE, UICC 등)를 열거하기 위한 기본 API를 제공합니다.
안드로이드를 더욱 탄탄하게
Android P에서도 안드로이드를 최고의 개발자 플랫폼으로 만들기 위한 오랜 투자는 계속됩니다.
앱의 보안
Android P에서는 여러 앱과 기기에서 보다 일관된 방법으로 사용할 수 있는 지문 인증 UI를 제공합니다. 이제 사용자가 지문 센서를 터치하도록 알려주는 표준 시스템 다이얼로그를 제공하며, 텍스트와 배치를 기기에 알맞게 관리합니다. 앱은 새로운 FingerprintDialog API를 사용하여 시스템 지문 대화상자를 보여줄 수 있으며, 최대한 빨리 새로운 시스템 다이얼로그를 사용하는 방식으로 전환하는 것을 권장합니다.
모든 네트워크 트래픽을 일반 텍스트(암호화되지 않은 HTTP)에서 TLS로 전환하기 위한 광범위한 노력의 일환으로, 모든 일반 텍스트 트래픽을 차단하도록 네트워크 보안 구성의 기본값을 변경하는 중입니다. 특정 도메인에 대해 명시적으로 평문 통신을 허용하도록 설정하지 않은 이상, 모든 통신은 TLS를 사용해야 합니다.
사용자의 개인정보 보호
더 나은 개인정보 보호를 보장하기 위해, Android P에서는 대기 상태인 앱에서 마이크, 카메라 및 모든 SensorManager 센서에 접근하는 것을 제한합니다. 앱의 UID가 대기 상태인 동안에는 마이크의 오디오가 꺼지고 센서는 이벤트 보고를 중단합니다 앱에 사용되는 카메라는 연결이 끊어지고 앱이 카메라 사용을 시도할 경우 오류가 발생합니다. 대부분의 경우 이러한 제한은 기존 앱에 새로운 문제를 유발하지 않지만, 이러한 요청을 앱에서 제거하는 것이 좋습니다.
저희는 또한 클라이언트측 비밀 키를 사용하는 Android 백업 암호화를 활성화할 것입니다. 이 기능은 아직 한창 개발 중이며 향후 Android P 미리보기 릴리스에서 출시될 것입니다.
장기적인 관점에서 저희는 연결된 네트워크별로 임의의 MAC 주소의 할당하는 기능을 플랫폼에 지원하기 위해 노력하고 있습니다. Android P가 실행 중인 지원 기기에서는, 실험적인 테스트를 위해 이 기능을 하나의 새로운 개발자 옵션으로 활성화할 수 있습니다.
Android P에서는 또한 플랫폼의 build.serial 식별자에 대한 액세스 제어 권한을 사용자에게 제공합니다. 이를 위해 READ_PHONE_STATE 권한이 필요합니다. 이 식별자에 대한 직접 액세스는 Android 8.0 이후로 지원이 중단되었습니다. Build.serial 식별자에 액세스하려면 Build.getSerial() 메서드를 사용해야 합니다.
ART 성능
저희는 ART 런타임을 통해 모든 앱의 성능과 효율을 개선하기 위해 노력 중입니다. 앱을 최적화하고 컴파일된 앱 코드의 인메모리 공간을 줄이기 위해 ART의 실행 프로필 사용을 확장했습니다. 이제 ART에서는 DEX 파일의 온디바이스 재작성을 위해 프로필 정보를 사용하며, 널리 사용되는 여러 앱에서 최대 11%까지 감소했습니다. 이를 통해 시스템 DEX 메모리의 사용량이 감소하고 앱의 시작 시간이 더 빨라질 것으로 기대합니다.
최적화된 Kotlin
Kotlin은 Android의 최고 수준 언어입니다. 아직 사용해 보지 않았다면 꼭 사용해 보세요! 저희는 Android의 Kotlin에 지속적인 노력을 기울여 왔으며, 앞으로도 계속해서 Kotlin 코드의 성능 최적화를 비롯한 지원을 확대해 나갈 것입니다. Android P에서 이러한 작업의 첫 결실을 볼 수 있게 될 것입니다. 더 나은 성능을 실현하기 위해 몇 가지 컴파일러 최적화(특히, 루프를 타겟팅하는 최적화)를 개선했습니다. 또한 Kotlin으로 생성된 코드를 최적화하기 위해 JetBrains와의 협력을 계속하고 있습니다. Kotlin의 최신 성능 개선 사항을 모두 이용하려면 Android Studio의 Kotlin 플러그인을 최신 상태로 유지하면 됩니다.
전원 효율
Android P에서 배터리 수명을 더욱 개선하기 위해 Doze, 앱 대기 및 백그라운드 제한을 정교하게 계속 다듬고 있습니다. 앱에서 이러한 기능을 사용해 보시고 피드백을 보내주세요.
최신 버전의 안드로이드 타겟팅
Android P는 안드로이드와 이를 기반으로 실행되는 앱을 최신화하기 위한 장기적인 노력의 산물입니다. 최근 발표한 것처럼, Google Play는 2018년 11월까지 모든 앱 업데이트가 Android Oreo(targetSdkVersion 26 이상)를 타겟팅하도록 요구하며, 2019년에는 64비트 하드웨어를 지원하도록 요구합니다.
이러한 변화와 더불어 Android P에서는 Android 4.2(targetSdkVersion 17 미만) 이전 플랫폼을 타겟팅하는 앱을 설치할 때 경고 대화상자를 사용자에게 표시하며, 향후 플랫폼 버전은 계속해서 그 영역을 넓혀갈 것입니다. 모든 Android 개발자는 API 26을 타겟팅하는 마이그레이션 계획을 지금부터 시작하는 것이 좋으며 마이그레이션 작업은 최대한 빨리 시작하는 것이 좋습니다. 다음은 도움말과 지원을 위한 리소스 체크리스트입니다. 여러분의 앱이 최신 버전의 안드로이드를 최대한 활용할 수 있기를 바랍니다.
공개 API를 통한 앱 호환성 개선
사용자와 개발자가 관심을 가지는 핵심 이슈는 앱 호환성입니다. 새로운 플랫폼 버전이 나올 때 이 버전에 맞게 앱이 준비되어야 하며, 사용자의 경우 앱이 비정상 종료되는 리스크나 개발자의 경우 급박한 출시의 리스크가 없어야 합니다. SDK 또는 NDK에 있는 Android 공개 API를 사용하는 앱은 호환성이 양호한 상태지만, 공개되지 않은 Android 인터페이스와 라이브러리를 사용하는 앱은 그렇지 못합니다.
따라서 Android P에서는 SDK에 없는 인터페이스에 대한 액세스를 제한하기 위해 점진적 프로세스를 시작합니다. 현재 사용하고 있는 API가 공개 API에 포함되어 있지 않은 경우 저희에게 알려 주세요. 저희는 개발자를 위한 이 프로세스가 최대한 원만하게 진행되기를 원합니다. 여러분의 피드백을 통해 저희는 개발자가 공개 API로 쉽게 마이그레이션할 수 있는 API만을 조기에 출시할 것입니다. 제한에 대한 자세한 내용은 여기를 참조하세요.
몇 가지 간단한 절차로 시작하세요
먼저, 사용자가 Android P로 매끄럽게 전환할 수 있도록 앱을 호환 가능하게 만드세요. 기기 시스템 이미지 또는 에뮬레이터 시스템 이미지를 다운로드하고, 현재 앱을 설치하고 테스트하세요. 앱이 올바로 실행 및 표시되고 동작 변경 사항을 제대로 처리해야 합니다. 필요한 업데이트를 수행한 후에는 앱의 플랫폼 타겟팅을 변경하지 않고 즉시 Google Play에 게시하는 것이 좋습니다.
Android P에서는 테스트나 개발을 위해 Pixel 기기를 반드시 구비하지 않아도 됩니다.대부분의 경우 AVD(Android Virtual Device)를 테스트 환경으로 Android Emulator에 설치하도록 적극 권장합니다. 최근 에뮬레이터를 사용해본 적이 없는 개발자라면 매우 빠르고(6초 안에 부팅) 사용이 편리하다는 것을 알 수 있습니다. 심지어는 긴 화면이나 카메라 컷아웃이 있는 화면과 같은 차세대 화면을 모델링할 수도 있습니다.
이어서 앱의 타겟팅을 "P"로 변경하고 완전한 Android P 환경을 사용하여 앱을 실행하세요. 앱의 targetSdkVersion을 'P'로, compileSdkVersion을 android-P로 설정하고 빌드한 후 테스트하세요. 테스트하려는 영역과 조정이 필요할 수도 있는 영역을 찾아내기 위해, P를 타겟팅하는 앱의 동작 변경 사항을 반드시 읽어보세요.
준비가 되면, Android P에 대해 자세히 살펴보고 자신의 앱에 활용할 수 있는 여러 새로운 기능과 API에 대해 알아보세요. 새로운 API를 더 쉽게 탐색할 수 있도록 Android P API 참조와 함께 API 차이점 보고서를 살펴보세요. P 개발자 미리보기 사이트를 방문하여 미리보기 타임라인 및 지원 리소스에 대해 자세히 알아보세요. 또한 개발자용 Android P의 새로운 기능을 설명하는 이 동영상도 확인해 보세요.
Android P로 빌드를 시작하려면, P Developer Preview SDK와 도구를 Android Studio 3.1에 다운로드하거나 최신 Android Studio 3.2 Canary 버전을 사용하세요. 또한, 28.0.0 서포트 라이브러리의 알파 버전도 출시할 예정입니다.
다음 단계
Android P Developer Preview에는 공식 Android Emulator와 Pixel, Pixel XL Pixel 2 및 Pixel 2 XL 기기에 테스트를 위한 시스템 이미지와 함께 업데이트된 SDK가 포함되어 있습니다.
이 미리보기를 통해 미리보기 시스템 이미지와 SDK를 정기적으로 업데이트할 계획입니다. 이 초기 릴리스는 개발자 전용으로, 일상적인 용도나 소비자용으로 제공되는 것은 아니므로 직접 다운로드하거나 플래시 전용으로 사용할 수 있도록 만들 예정입니다. 여기에서 다운로드 파일과 지침을 찾을 수 있습니다.
완제품에 가까워질 무렵 소비자에게도 시제품 형식으로 사용해 볼 기회를 드리고, 이때 Android Beta를 통해 등록을 시작할 예정입니다. 자세한 정보에 계속 귀를 기울이세요. 그러나 지금은 Android P에서 Android Beta를 사용할 수 없습니다.
언제나 그렇듯이 귀하의 의견은 중요합니다. 어떻게 생각하시는지 알려주세요. 빨리 알려주실수록 더 많은 피드백을 반영할 수 있습니다. 문제가 발견되면 여기로 신고해주세요. 플랫폼 문제, 앱 호환성 문제 및 타사 SDK 문제를 제출하기 위한 별도의 핫리스트가 있습니다.
반응형
'개발 > Google Developers korea 블로그' 카테고리의 다른 글
Android에서의 최신 백그라운드 실행 방법을 알려드립니다 (0) | 2018.12.07 |
---|---|
개발자를 위한 안드로이드 9 파이 (Pie)를 소개합니다 (0) | 2018.09.06 |
효과적으로 전화번호 인증하는 방법을 확인해 보세요! (0) | 2018.03.29 |
최신 디바이스의 더 커진 화면을 위해 새로운 화면비(Screen Aspect Ratio)를 설정해 보세요. (0) | 2017.04.11 |
새로운 폰트, Noto Serif CJK를 지금 바로 확인해 보세요! (0) | 2017.04.11 |
댓글