이 글의 원문은 여기서 확인하실 수 있으며 블로그 리뷰에는 강사룡(Google)님이 참여해주셨습니다.
오늘 Google I/O에서는 저희의 가장 야심 찬 릴리스라고 할 수 있는 Android 12의 첫 베타 버전이 공개되었습니다. 사용자에게 맞게 변화하는 새로운 UI에 초점을 맞추고, 개인정보 보호와 보안에 중점을 두어 성능을 개선했습니다. 개발자 여러분에게는 휴대전화, 노트북, 태블릿, 웨어러블 기기, TV, 자동차에서 쾌적한 사용자 환경을 구축할 수 있도록 더욱 다양한 도구를 제공해드리고자 합니다.
이번 베타 버전 1에서는 살펴볼 것이 많습니다. Android가 출시된 이래로 가장 큰 규모의 UI 업데이트를 진행했으며, '머티리얼 유(Material You)'라는 디자인 언어를 적용했습니다. 새로운 개인정보 보호 기능(예: “대략적인 위치”만 허용) 뿐 아니라, 앱과 사용자가 고성능 기기를 식별할 수 있는 성능 클래스(Performance Class)라는 새로운 표준도 적용되었습니다.
여기에 등록하시면 Android 12 베타를 Pixel 기기에서 바로 체험해볼 수 있습니다. 신속하게 업데이트를 제공해준 기기 제조사 파트너 덕분에 다른 기기에서도 베타 버전을 다운로드할 수 있습니다. 현재 ASUS, OnePlus, Oppo, Realme, Sharp, TCL, Transsion, Vivo, Xiaomi, ZTE의 일부 기기에서 제공되고 있으며 다른 기기에서도 곧 제공될 예정입니다. 자세한 내용은 android.com/beta를 참조하세요.
이 글을 통해 새로운 기능에 대해 간략하게 살펴보시고, Android 12 개발자 사이트에서 Android 12에 대한 자세한 내용과 개발 시작 방법을 확인해보세요.
Android의 새로운 UI
소비자 블로그 게시물에서 강조했듯이, Android 12는 Android 역사상 가장 큰 규모로 디자인이 변경되었습니다. 색상에서 모양, 빛, 모션에 이르기까지 모든 환경을 새롭게 구상하였고 Android 12는 더욱 표현이 풍부하고 동적이면서도 개별적으로 바뀌었습니다. 소프트웨어, 하드웨어 및 머티리얼 디자인 팀과의 심도 있는 협력 덕분에 지금과 같은 결과를 얻을 수 있었습니다. 그리고 소프트웨어와 하드웨어 생태계가 '머티리얼 유(Material You)'라는 하나의 디자인 언어로 통합됩니다.
모든 플랫폼과 UI 구성 요소에 새로운 디자인 언어를 확대하였으므로 앱에서 디자인이 자동 업그레이드됩니다.
새로 디자인된 위젯 - Android 12의 디자인을 바꾸었을 뿐만 아니라, 더욱 유용하고 아름다우면서도 검색하기 쉽게 위젯 디자인을 업데이트했습니다. 새로운 인터랙티브 컨트롤(예: 확인란, 스위치, 라디오 버튼)을 추가하여 위젯의 개인화가 더욱 편리해졌습니다. Android 12 위젯은 시스템 UI 및 테마와 조화를 이루고, 모든 런처 및 홈 화면에 맞추어 둥근 모서리와 패딩이 자동 조정됩니다. 반응형 레이아웃을 사용하면 휴대전화, 태블릿, 폴더블 등의 화면에 맞게 위젯을 조정할 수 있습니다. 또한, 위젯이 시스템 색상을 사용하여 개인화되었지만 일관적인 스타일을 구현할 수 있도록 동적 색상 API를 추가했습니다. 위젯 선택기 및 어시스턴트와의 통합을 개선해서 위젯을 찾아내기가 훨씬 쉬워졌습니다. 샘플 코드를 확인하고 업데이트된 위젯을 사용해 보세요. 자세한 내용은 여기를 참조하세요.
스트레치 오버스크롤 - 시스템 전체에 새로운 '스트레치' 오버스크롤 효과(‘stretch’ overscroll effect)를 추가했습니다. UI에서 사용 가능한 콘텐츠 끝을 지나서까지 스크롤한 경우 사용자에게 알려줍니다. 이 스트레치 효과는 모든 앱에 공통적인 자연스러운 수직 및 수평 스크롤 정지 표시기를 제공하고, 기본적으로 Android 플랫폼과 AndroidX에서 컨테이너 스크롤링에 활성화됩니다. 새로운 스트레치 오버스크롤은 이전 버전에서 지원한 글로우 오버스크롤을 대체합니다. 새로운 스크롤 동작으로 앱과 콘텐츠를 테스트해보고 필요한 경우 옵트아웃이 가능합니다. 자세한 내용은 여기를 참조하세요.
더욱 매끄러운 오디오 전환 - UI는 시각적 요소에만 국한되는 것이 아닙니다. 이번 업데이트에서 저희는 오디오 포커스 처리 방식도 개선했습니다. 앱이 오디오 포커스를 잃으면 오디오가 자동으로 서서히 줄어듭니다. 오디오를 재생하는 앱 간의 전환이 부드러워져서 앱이 서로 겹쳐서 오디오를 재생하지 않습니다. 특히, 폴더블과 멀티스크린 Android 환경에서 유용합니다. 자세한 내용은 여기를 참조하세요.
성능
Android 12에서는 성능에 상당한 규모로 투자했습니다. 시스템과 앱을 빠르고 매끄럽게 실행되게 하는 기본 성능을 개선하고 개발자가 각 기기에서 더욱 풍부한 환경을 제공할 수 있도록 새로운 고성능 기기 표준도 도입했습니다.
더욱 빠르고 효율적인 시스템 성능 - 코어 시스템 서비스에 필요한 CPU 시간을 22% 단축하여 기기의 실행 속도와 반응 속도가 빨라질 것입니다. 시스템 서버의 대형 코어 사용량을 15% 줄여서 Android의 전력 효율도 개선하였고, 이는 교체가 필요할 때까지 기기를 오래도록 사용하는 데 도움이 됩니다.
잠금 충돌(lock contention)과 레이턴시 가변성을 줄여서 앱 전환과 시작 시간도 개선했습니다. 앱 로드 시간을 줄이기 위해 I/O도 최적화했습니다. PackageManager에서는 읽기 전용 스냅샷으로 잠금 충돌을 92%까지 줄였습니다. 바인더에서는 경량형 캐싱으로 대상 셀에서 지연을 최대 47배 낮추었습니다. I/O에서는 dex/odex/vdex 파일을 가속화하여 메모리가 적은 휴대폰에서 앱 로드 시간을 개선했습니다. 알림 트램폴린(notification trampolines)도 제한한 덕분에 알림에서 시작되는 앱의 지연 시간을 줄일 수 있었습니다. 예를 들어 Google 포토 앱은 알림 트램폴린을 제한한 이후부터 시작 속도가 34% 빨라졌습니다.
데이터베이스 쿼리 성능을 개선하기 위해 바인더 트랜잭션에서 결과를 인라인으로 넣어 CursorWindow를 최적화했습니다. 작은 윈도우의 경우, CursorWindow가 36% 더 빠르고, 1,000행이 넘는 윈도우는 49배까지 속도가 단축되었습니다.
성능 클래스 - Android 12 이후부터는 생태계 파트너와 협력하여 고성능 Android 기기를 위한 공통적 표준을 도입합니다.
'성능 클래스(performance class)'라고 부르는 이 표준은 Android 기준 요구 사항을 뛰어넘는 기능 세트를 정의합니다. 성능 클래스 요구 사항을 충족하는 기기는 더욱 까다로운 사용 사례를 지원하고 더욱 양질의 콘텐츠를 제공할 수 있습니다. 개발자는 런타임에서 성능 클래스를 검사한 다음, 기기 성능을 최대로 활용해 향상된 환경을 안정적으로 제공할 수 있습니다.
먼저 저희는 미디어 사용에서의 성능 클래스 기능에 초점을 맞추었습니다. 카메라 시작 지연, 코덱 가용성, 인코딩 품질, 최소 메모리 용량, 화면 해상도, 읽기/쓰기 성능 등의 요구 사항에 많은 신경을 기울였습니다. 자세한 내용은 여기를 참조하세요.
개인정보 보호를 고려한 설계
Google은 모든 부분에서 개인정보 보호에 중점을 두고 있습니다. Android 12에서도 기기와 데이터를 안전하게 보호하는 동시에 사용자에게 더 많은 투명성과 제어 능력을 부여하고자 합니다. 오늘 저희는 베타 2에서 제공될 몇 가지 새로운 개인 정보 보호 기능(개인정보 대시보드, 마이크 및 카메라 표시기, 마이크 및 카메라 토글)을 발표했습니다. 더 자세한 내용을 앞으로도 계속 지켜봐주세요. 그럼 이제 베타 1의 새로운 기능을 소개해드리겠습니다.
앱 동면(App hibernation) - 2주에 한 번씩 Android는 사용하지 않는 앱 800만 개 이상에 대한 권한을 재설정하고 잊힌 앱에서 데이터에 액세스하지 못하게 차단합니다. Android 12에서는 장기간 사용하지 않은 앱을 지능적으로 동면 시켜 권한 자동 초기화(permissions auto-reset)를 개발하고 있으며, 기기 저장용량, 성능 및 안전성에 최적화합니다. 동면은 사용자가 이전에 부여한 권한을 취소할 뿐만 아니라 앱을 강제로 정지하고 메모리와 저장용량, 기타 임시 리소스를 회수합니다. 동면 상태에서는 앱이 백그라운드에서 작업을 실행하거나 푸시 알림을 수신할 수 없기 때문에 사용자를 안전하게 지키는 데 도움을 줍니다. 동면은 대부분 앱에서 투명하게 확인할 수 있지만, 필요한 경우에는 사용자를 Settings로 이동 시켜 해당 앱의 기능을 끄도록 할 수 있습니다. 자세한 내용은 여기를 참조하세요.
주변 기기 권한(Nearby device permissions) - 이전에는 블루투스 스캔을 하려면 앱에 위치 권한이 있어야 했습니다. 이는 주변 기기와 페어링이 필요하지만 기기 위치는 필요하지 않은 앱에서 문제가 되었습니다. 이제 앱에서 위치 권한 없이 주변 기기를 스캔할 수 있습니다. Android 12를 대상으로 하는 앱은 BLUETOOTH_SCAN 권한과 usesPermissionFlags=”neverForLocation” 속성을 사용하여 스캔할 수 있습니다. 기기와 페어링한 다음에는 BLUETOOTH_CONNECT 권한을 사용하여 상호작용합니다. 이 권한은 앱의 마찰을 줄이고 개인정보 보호가 강화된 앱 설계를 지원합니다. 자세한 내용은 여기를 참조하세요.
대략적인 위치(approximate location) - 얼마 전 저희는 위치 액세스 권한을 관리하는 방법을 개선한 바 있습니다. 예를 들어 포그라운드와 백그라운드 액세스에 별도의 권한을 부여하고 '일회성' 옵션을 제공합니다. Android 12를 대상으로 하는 앱에게는 새로운 대략적인 위치' 옵션으로 더욱 강력한 통제권이 부여됩니다. 앱이 정확한 위치 데이터를 요청하면 사용자는 정확한 위치를 제공할지, 대략적인 위치를 제공할지 선택할 수 있습니다. 또한 사용자는 언제든 Settings에서 앱의 위치 정밀도를 변경할 수 있습니다. 앱에서 정확한 위치 데이터(ACCESS_FINE_LOCATION)를 요청할 경우, 이 변경 사항을 고려하여 대략적인 위치를 선택했을 때에도 앱이 적절히 기능하도록 해야 합니다. 위치를 사용하는 사례의 대부분은 대략적인 위치(ACCESS_COARSE_LOCATION)만 요청하는 것이 좋습니다. 자세한 내용은 여기를 참조하세요.
앱 호환성
아직 Android 12와 앱의 호환성을 테스트하지 않으셨다면 지금 시작하세요! Android 12 베타 버전부터는 얼리 어댑터 사용자와 개발자가 Pixel 및 기타 기기에서 액세스할 수 있습니다. 즉, 앞으로 몇 주 후부터는 훨씬 많은 사용자가 Android 12에서 여러분의 앱을 사용해보고 발견한 문제를 신고할 수 있게 됩니다.
호환성을 테스트하려면 Google Play이나 다른 소스를 통해 배포된 앱을 Android 12 베타 버전을 실행하는 기기 또는 에뮬레이터에 설치하고 모든 앱 플로우를 처리하세요. 동적 변경 사항을 검토하고 테스트에 집중하세요. 문제를 해결하고 나면, 최대한 신속하게 업데이트를 배포하세요.
베타 버전 출시와 더불어 2021년 8월로 예정된 플랫폼 안정성 시점에 한 걸음 다가섰습니다. 그 이후부터는 앱에 표시되는 시스템 동작과 SDK/NDK API, 비 SDK API 목록이 최종 확정됩니다. 바로 그때 최종 호환성 테스트를 마무리하고 완전히 호환 가능한 버전의 앱, SDK 또는 라이브러리를 출시할 수 있습니다. 개발자 일정에 관한 자세한 내용은 여기에서 확인하실 수 있습니다.
Android 12 시작하기!
오늘 출시된 베타 릴리스에는 Android 12 기능을 사용해보고, 앱을 테스트하고, 피드백을 제공하는 데 필요한 모든 것이 있습니다. 지원되는 Pixel 기기를 여기에 등록하시면 무선 다운로드를 통해 업데이트 파일을 받으실 수 있습니다. 프리뷰 빌드를 이미 설치했다면 베타 업데이트가 자동 설치됩니다. 개발을 시작하려면 SDK를 설정하세요.
Android 12 개발자 프리뷰 프로그램에 참여하는 유명 기기 제조사 파트너의 기기에도 Android 12 베타 버전을 다운로드할 수 있습니다. 모든 파트너 목록은 android.com/beta에서 확인하실 수 있으며, 지원되는 기기에 대한 자세한 정보가 나와 있는 사이트가 링크되어 있습니다. 각 파트너가 등록과 지원을 처리하고 직접 베타 업데이트를 제공합니다.
지원되는 기기에서 더욱 광범위하게 테스트하려면 Android GSI 이미지에서 Android 12 베타 버전을 사용해보세요. 기기가 없다면 Android Emulator에서 테스트할 수도 있습니다. Android 스튜디오의 SDK Manager에서 최신 에뮬레이터 시스템 이미지를 다운로드하세요.
베타 버전을 다운로드하는 방법에 대한 자세한 내용은 Android 12 개발자 사이트를 참조하세요.