이 글의 원문은 여기서 확인하실 수 있으며 블로그 리뷰에는 양찬석(Google)님이 참여해주셨습니다.
Google I/O 2021이 불과 몇 주 앞으로 다가왔습니다. 곧 Android의 모든 최신 소식을 여러분께 공유해 드릴 수 있길 바랍니다. 오늘은 조금 더 나아가, 여러분이 테스트하고 의견을 전해주실 수 있도록 Android 12의 다음 이정표가 될 Developer Preview 3 릴리스를 공유하고자 합니다.
저희는 개인정보 보호와 보안을 핵심 과제로 삼아 Android 12를 더 스마트하고, 더 사용하기 쉬우며, 더 나은 성능의 OS로 만드는데 주력하고 있습니다. 또한, 전화, 노트북, 태블릿, TV, 자동차 등에서 사용자가 훌륭한 경험을 할 수 있도록 지원하는 새로운 도구를 개발자 여러분에게 제공하기 위해 노력하고 있습니다. 이번 릴리스에서 확인해 볼 사항은 새로운 앱 시작 경험, 하드웨어 기능을 더 잘 활용하는데 유용한 새로운 동영상 및 카메라 기능, 배터리 절약에 도움이 되도록 정확한 알람(Exact Alarm)을 설정할 때 필요한 새로운 권한 등입니다.
주요 사항에 관해 더 자세한 내용과 Pixel 이미지 다운로드에 관해서는 Android 12 개발자 사이트를 확인해주세요. Developer Preview 2 빌드를 이미 실행 중인 분은 곧 OTA(Over-The Air) 업데이트가 제공될 예정이므로 잘 살펴봐주세요! 지금까지 귀중한 의견을 나누어주신 모든 분께 감사드리며 앞으로도 여러분의 많은 의견을 부탁드립니다.
더 나은 사용자 경험 도구(Better user experience tools)
이번 릴리스에는 사용자에게 세련된 경험과 더 나은 성능을 제공하는 데 도움이 되는 새로운 도구가 포함되어 있습니다. 업데이트 내용은 다음과 같습니다.
개선된 앱 시작 경험(Improved app launch experience) - Android 12에서는 앱 시작이 더욱 일관적이고 즐거운 경험이 되도록 만들었습니다. 시작 시점부터 모든 앱에 새로운 앱 시작 애니메이션, 앱 아이콘을 보여주는 스플래시 화면, 앱 자체로의 전환을 추가했습니다. 개선된 앱 시작 경험에서는 앱을 시작할 때마다 표준 디자인 요소가 적용되지만, 앱이 고유한 브랜딩을 유지할 수 있도록 사용자 설정도 가능합니다. 예를 들어, 새 스플래시 화면 API와 리소스를 사용하여 스플래시 화면 창의 배경 색(background color)을 관리하고, 정적 런처 아이콘(static launcher icon)을 맞춤 아이콘(custom icon)이나 애니메이션(animation)으로 바꾸고, 밝은 모드 또는 어두운 모드를 설정하고, 종료 애니메이션(exit animation)에 앱을 표시하는 타이밍을 제어할 수 있습니다.
모든 앱에서 기본적으로 새로운 경험이 제공되기 때문에, 새로운 경험을 활용하기 위해 여러분께서 별도로 해야 할 일은 아무것도 없습니다. 특히 이미 스플래시 화면(splash screen)을 사용 중이라면, 새로워진 앱 시작 경험을 앱에 테스트해 보는 것이 좋습니다. 사용자 설정을 이용하려면 새로운 API를 확인해 주시고, 여러분의 의견을 들려주세요. 더 자세한 내용은 여기서 살펴보실 수 있습니다.
새 통화 알림 템플릿(New call notification template) - 수신 전화와 진행 중인 통화는 사용자에게 중요하므로 눈으로 보고 관리하기 쉬워야 합니다. Android 12는 통화 알림을 개선하여 더 많은 가시성(visibility)과 스캐너빌리티(scannability)를 제공하고 다른 알림 구성 요소와의 일관성도 더 향상시켰습니다. 전화 걸기 앱이나 영상 통화 기능이 있는 채팅 앱처럼 앱에서 통화할 경우 새로운 CallStyle 템플릿을 사용해 보세요. 템플릿을 사용하여 수신 통화, 발신 통화, 선별된 통화에 대한 알림을 생성할 수 있습니다. 각 유형 마다 기본 작업과 사용자 설정 작업을 포함한 여러 작업을 지원합니다. 또한, 큰 아바타 이미지 삽입, 텍스트 제공 및 버튼 색상 정보 설정도 가능합니다. OS는 CallStyle 알림에 높은 가시성을 부여해 잘 보이도록 합니다(예: 알림을 알림 음영 상단에 표시). 더 자세한 내용은 여기서 확인하세요.
정확한 알람을 위한 새 권한(New permission for exact alarm) - 알람은 앱이 작업을 예약하는 중요한 수단입니다. 대부분, 앱은 부정확한 알람(inexact alarms)을 사용해야 하는데, 이는 배터리 친화적이라는 장점 때문이죠. Android는 잠자기 및 앱 대기(Doze and App Stanby) 등을 통해 절전 모드 해제 및 배터리 영향을 최소화하도록 이러한 알람을 관리합니다. 정확한 타이밍(예: 알람 시계와 타이머)에 울리는 알람이 필요한 경우에는 정확한 알람(exact alarms)을 대신 사용할 수 있습니다. 이런 기능은 편리하고 안정적이지만, 특히 지나치게 많이 사용할 경우 배터리 방전을 유발할 수도 있습니다. 그래서 Android 12는 몇 가지 변경을 시행해 사용자에게 더 많은 제어 권한을 부여할 예정입니다.
Android 12를 대상으로 하면서 정확한 알람을 사용하려는 앱은 이제 새 권한인SCHEDULE_EXACT_ALARM을 요청해야 합니다. 이는 일반적인 권한이므로 매니페스트에 이 권한을 선언하고 나면 처음 시작할 때 자동으로 이 권한이 부여됩니다. 하지만 이 권한이 있는 앱에 대해 사용자에게 가시성(visibility)을 주고 사용자가 Settings의 Special App Access Permissions에서 이를 허용하거나 취소할 수도 있도록 할 예정입니다. 앱에 정확한 알람이 필요한 경우 더 이상 권한이 없는 상황을 적절히 처리해야 합니다. 앱의 권한 상태를 확인할 수 있도록 새 API canScheduleExactAlarms()를 추가했습니다. 일반적으로, 가능한 경우에는 정확한 알람을 사용하지 않도록 앱을 마이그레이션하는 것이 좋습니다. 더 자세한 내용은 여기서 확인하세요.
향상된 웹 연결(Improved web linking) - Android 12에서는 사용자가 콘텐츠에 더 빠르고 원활하게 접근할 수 있도록 몇 가지 사항을 변경할 예정입니다. 먼저 Android 앱 링크(Android App Links)를 통해 확인되지 않거나 사용자가 승인하지 않은 링크의 기본 처리 방식을 변경했습니다. 이제 Android 12 OS에서는 선택기 대화상자(choose dialog)를 표시하지 않고 기본 브라우저에서 이런 링크가 바로 열릴 것입니다. 사용자가 앱에서 링크를 더 쉽게 승인할 수 있도록, Settings의 'Open by default' 설정으로 바로 이동할 수 있는 새 인텐트(new Intent)를 추가했습니다. 여러분의 앱만이 여러분의 도메인 링크를 처리할 수 있도록 하려면 앱 링크(App Links)를 사용할 수 있습니다. 링크를 구성하고 테스트하는 데 도움이 되도록 새 adb 명령을 추가했습니다. 더 자세한 내용은 여기서 확인하세요.
풍부한 햅틱 경험(Rich haptic experiences) - UI 이벤트에 대한 유용한 정보를 주는 햅틱 반응, 게임의 몰입감과 즐거움을 향상시키는 효과, 생산성을 위한 주의 집중용 햅틱 형성을 위한 도구를 늘리는 작업이 진행 중입니다. 최신 액추에이터(actuators)의 더 넓은 주파수 대역폭을 활용하는 low tick 같은 표현 효과를 추가했습니다. 게임 개발자는 이제 게임 컨트롤러에서 여러 다양한 액추에이터에 독립적으로 액세스하여 여러 액추에이터에 똑같은 효과를 동기식으로 제공하거나 다양한 햅틱 효과를 제공할 수 있습니다. 개발자의 경우, 햅틱 효과를 위한 기본 구성 요소로 상수(constants)와 기본 형식(primitives)을 사용하는 것을 권장합니다. 플랫폼에서 기본 제공하는 효과를 활용해 UI 이벤트를 개선하고 햅틱 작성기(haptic composer)로 기본 형식을 시퀀싱하여 더 복잡한 효과를 만들 수도 있습니다. 오늘 바로 Pixel 4 기기에서 이러한 API를 완전하게 활용할 수 있으며, 저희 팀은 계속해서 기기 제조사 파트너와 협력하여 생태계 전반에 걸쳐 사용자에게 최신 햅틱 지원을 제공하고 있습니다.
동영상 인코딩 개선 사항(Video encoding improvements) - Android 12에서는 동영상 QP(양자화 매개변수)의 범위를 제어하기 위한 키 집합을 표준화하므로 개발자가 벤더 고유의 코드(vendor-specific code)를 피할 수 있습니다. 새 키는 MediaFormat API뿐 아니라 NDK Media 라이브러리에서도 사용할 수 있습니다. 동영상 인코더는 사용자가 복잡한 동영상을 볼 때 화질이 심하게 저하되지 않도록 동영상의 최저 화질 기준점(minimum video quality threshold)을 정해야 합니다.
Camera2 벤더 확장 프로그램(Camera2 vendor extensions) - Google의 기기 제조 파트너사 대부분은 앱이 자사 기기에서 차별화된 경험을 만들기 위해 사용할 수 있도록 사용자 설정 카메라 효과(예: 보케, HDR, 야간 모드 등)를 구현했습니다. 저희 팀은 CameraX 라이브러리에서 일련의 벤더 확장 프로그램을 통해 이러한 사용자 설정 효과를 이미 지원해왔으며, 이제 Android 12에서는 플랫폼에서도 직접 벤더 확장 프로그램을 노출할 예정입니다. 이를 통해 복잡한 Camera2 구현이 있는 앱에서 기존 코드를 크게 변경하지 않고도 확장 기능을 활용할 수 있습니다. 확장 API는 CameraX와 정확히 동일한 효과 집합(same set of effects)을 노출하며, 이러한 효과는 다수의 다양한 기기에서 이미 지원되므로 별도의 구성 없이 바로 사용할 수 있습니다. 더 자세한 내용은 여기서 확인하세요.
쿼드 베이어 카메라 센서 지원(Quad bayer camera sensor support) - 오늘날 많은 Android 기기에는 일반적으로 쿼드/노나 베이어 패턴(Quad/Nona Bayer patterms)으로 초고해상도 카메라 센서가 탑재되며, 이들은 화질과 저조도 성능 측면에서 뛰어난 유연성을 제공합니다. Android 12에서는 타사 앱이 이러한 다목적 센서를(versatile sensors) 최대한 활용할 수 있도록 하는 새로운 플랫폼 API를 도입할 예정입니다. 이 새로운 API는 이러한 센서의 고유한 동작을 지원하고 전체 해상도(full resolution) 또는 '최대 해상도(maximum resolution)' 모드와 '기본(default)' 모드로 작동할 때 서로 다른 스트림 구성과 조합을 지원할 수 있다는 점을 고려합니다.
더욱 빠른 머신러닝(Faster machine learning) - 저희는 Android 12에서 개발자가 Neural Networks API를 통해 ML 가속기(accelerators)를 최대한 활용하고 항상 가능한 한 최고의 성능을 발휘할 수 있도록 주요 분야에 투자했습니다. 성능 개선 측면에서 보자면, 패딩(padding)과 동기화 펜스(sync fences), 재사용 가능한 실행 객체(reusable execution objects) 같은 개선 사항을 도입하여 추론 호출 오버헤드(inference call overhead)를 절반 이상 줄였습니다. 또한, Google Play 서비스를 통해 플랫폼 릴리스와는 별개로ML 가속기 드라이버를 업데이트할 수 있게 했습니다. 이에 따라 개발자는 어떤 호환 기기에서든 최신 드라이버를 더 쉽게 활용할 수 있고, ML 성능 개선 사항과 버그 수정 사항이 그 어느 때보다도 빠르게 사용자에게 전달될 것입니다.
GPU 컴퓨팅 표준화(Standardizing GPU compute) - Vulkan 및 OpenGL과 같은 교차 플랫폼 GPU 컴퓨팅 솔루션을 위해 RenderScript API의 사용을 중단할 예정입니다. 고성능 워크로드가 GPU 하드웨어에서 실행될 것이라고 여러분이 확신하길 바라며, 많은 기기가 이미 CPU 기반 RenderScript만 지원되도록 구성되어 출고 중입니다. 기존 API는 당분간 계속 작동할 것이며, 고도로 최적화된 내장 기능 플랫폼 코드를 사용하는 흐리기(blur)와 같은 RenderScript 내장 기능을 위한 라이브러리를 오픈소스로 제공했습니다. Vulkan을 사용하여 이미지 처리를 구현하기 위한 샘플과 마이그레이션 가이드도 제공됩니다. 더 자세한 내용은 여기서 확인하세요.
네이티브 충돌에 대한 더 나은 디버깅(Better debugging for native crashes) - 개발자가 NDK 관련 충돌을 디버깅하기 어려울 수 있다는 얘기를 들었습니다. Android 12에서는 직접적인 조치를 취할 수 있는 진단 기능을 더 많이 제공하여 좀 더 쉽게 디버깅할 수 있도록 지원할 예정입니다. 플랫폼에서는 네이티브 충돌을 디버깅하기 위해 Tombstone이라는 크래시 덤프 파일(crash dump file)을 사용하는데, 이런 파일에는 ART를 통한 해제, fdsan과의 통합, GWP-ASan, HWASan 또는 MTE 충돌과 관련된 모든 스택 기록 등, 다양한 문제를 진단하는 데 필요한 정보가 있습니다. 이제는 App Exit Reasons API를 통해 Tombstone 파일에 대한 액세스 권한을 앱에 제공할 예정입니다. 앱에서 `REASON_CRASH_NATIVE`가 있는 `ApplicationExitInfo`를 사용할 때, 이제는 `getTraceInputStream()`을 호출하여 Tombstone 데이터를 프로토콜 버퍼(protocol buffer)로 얻을 수 있습니다.
더욱 유연한 백업 구성(More-flexible backup configurations) - 사용자가 Android의 백업 서비스를 통해 데이터를 손쉽게 복원하거나 새 기기로 마이그레이션할 수 있습니다. 앱이 이 경험의 중심이며 사용자가 앱 데이터를 쉽게 전송하고 앞서 중단했던 곳에서 계속 사용할 수 있도록 합니다. 백업 서비스는 Google Drive에 대한 클라우드 백업과 기기 간 전송을 모두 지원하며, 개발자는 앱에서 최소한의 변경만으로 이런 기능을 활용할 수 있습니다. Android 12를 대상으로 하는 앱의 경우, 향상된 유연성과 제어 성능을 제공할 수 있도록 서비스 개선이 진행 중입니다. 이제는 클라우드 백업과 기기 간 전송에 서로 다른 규칙을 설정할 수 있도록 XML 구성 형식을 업데이트했습니다. 이에 따라, 예컨대 클라우드 백업에서 대용량 파일을 제외하지만 기기 간 전송에는 포함할 수 있습니다. 백업 또는 전송을 위한 암호화 요구 사항(encryption requirements)을 별도로 설정할 수도 있습니다. 마지막으로, 기기 간 전송을 위해 자동 백업을 선택 해제하려면 allowBackup 매니페스트 속성 대신 새 구성 형식을 사용하세요. 더 자세한 내용은 여기서 확인하세요.
여기에서 Android 12의 모든 기능과 동작 변경 사항에 대한 자세한 내용을 읽어 보실 수 있습니다.
앱 호환성(App compatibility)
새 플랫폼 버전을 출시하면서 앱 호환성을 최우선 순위에 두어, 더 빠르고 원활한 업데이트를 위해 노력 중입니다. Android 12에서는 개발자에게 더 많은 시간을 주기 위해 앱이 거쳐야 하는 대부분의 변경 사항을 선택할 수 있도록 했을 뿐 아니라 개발자가 더 신속하게 준비할 수 있도록 관련 도구와 프로세스를 업데이트했습니다.
Developer Preview 3을 통해 안정성을 계속 개선하면서 첫 번째 베타 릴리스에 더욱 가까워지고 있습니다. 새로운 기능과 변경 사항을 사용해보고 이들이 앱에서 어떻게 작동하는지 알려주세요. 피드백 페이지에서 여러분의 의견을 들려주시거나 혹은 문제가 되는 부분에 대해 말씀해주세요.
첫 번째 베타 버전이 곧 출시될 예정이므로, 이제 호환성 테스트를 시작해 앱이 제대로 준비되었는지 확인하기 좋은 기회이기도 합니다. 앞으로 몇 주 동안 호환 가능한 업데이트를 릴리스하는 것이 좋습니다. 동작 변경 전환(behavior change toggles) 기능을 사용하여 Android 12의 변경 사항으로 인해 앱이 어떤 영향을 받을 수 있을지 미리 알아볼 수는 있지만, 지금 당장 앱의 targetSdkVersion을 변경할 필요는 없습니다.
2021년 8월에 플랫폼 안정성(Platform Stabiltiy) 단계에 도달하면 앱에 표시되는 모든 시스템 동작, SDK/NDK API, 비 SDK 목록이 최종 확정될 것입니다. 바로 그때 최종 호환성 테스트를 마무리하고 완전히 호환 가능한 버전의 앱, SDK 또는 라이브러리를 출시할 수 있습니다. 개발자를 위한 주요 일정은 여기에서 확인하실 수 있습니다.
개발자 옵션에서 앱 호환성 전환
Android 12 시작하기
Developer Preview에는 Android 12 기능을 사용해보고 앱을 테스트하고 의견을 전해주시는 데 필요한 모든 것이 있습니다. 지금부터 바로 Pixel 3/3 XL, Pixel 3a/3a XL, Pixel 4/4 XL, Pixel 4a/4a 5G 또는 Pixel 5 기기로 기기 시스템 이미지를 플래시하거나 Android Emulator를 사용하여 시작할 수 있습니다. Pixel 기기에 프리뷰 빌드를 이미 설치하신 분은 무선 업데이트 방식으로 이후의 모든 프리뷰와 베타 버전에 대한 업데이트를 자동으로 받게 됩니다. Android 12를 다운로드하는 자세한 방법은 여기서 확인하세요.
더 자세한 내용은 Android 12 개발자 사이트를 참조해주세요.