원문은 여기서 확인 가능하며, 블로그 리뷰에는 양찬석님(Google)님이 참여해주셨습니다.
지난 달 저희는 다음 버전의 Android를 일찍 엿볼 수 있도록 Android 12의 첫 번째 프리뷰를 공유해드렸습니다. 오늘은 여러분의 앱에서 시험해 볼 수 있는 새로운 기능 및 변경 사항과 함께, 올해 릴리스에 포함될 두 번째 빌드를 소개해 드리겠습니다. 초기 프리뷰는 개방성과 커뮤니티와의 협업이라는 Android의 핵심 철학을 토대로 공개되고 있습니다. 개발자 여러분의 의견을 밑거름 삼아 Android가 개발자와 사용자에게 더 나은 플랫폼으로 거듭날 수 있도록 계속해서 좋은 의견을 많이 보내 주세요!
개인정보 보호와 보안을 핵심으로 삼아 Android 12를 더욱 스마트하고 사용하기 쉬우며 더 나은 성능을 발휘하는 OS로 만들고 있습니다. 또한, 사용자가 전화, 노트북, 태블릿, TV, 자동차 등 어떤 사용 환경에서도 멋지고 훌륭한 경험을 할 수 있도록 지원하는 새로운 도구를 개발자에게 제공하기 위해 노력하고 있습니다. 오늘 릴리스에서 살펴볼 사항은 새로운 둥근 모서리 API, 향상된 PIP 모드 API, 더 나은 부속 기기 관리, 블러 및 컬러 필터처럼 더욱 간편해진 효과, 앱 오버레이 컨트롤 등이 있습니다.
Developer Preview 2에서 확인해 볼 내용이 많습니다. 몇 가지 주요 사항에 대해 읽어보고, Android 12 개발자 사이트를 방문해 자세한 내용을 알아보고, Pixel용 다운로드 파일도 받으세요. Developer Preview 1 또는 1.1을 이미 실행 중인 분들을 위해 오늘 릴리스에 대해 무선(OTA) 업데이트도 제공해드립니다.
지금까지 귀중한 의견을 나누어주신 모든 분께 감사드리며 앞으로도 여러분들의 많은 의견 부탁드리겠습니다.
신뢰와 안전
우리는 사용자의 기기와 데이터를 안전하게 보호하면서 사용자에게 더 많은 투명성과 제어 능력을 제공하는 데 계속 주력하고 있습니다. 이번 릴리스에서는 앱을 확인하고 테스트하는 몇 가지 새로운 기능을 추가했습니다.
앱 오버레이 컨트롤(App overlay controls) - Android의 시스템 알림 창은 활성 상태의 앱 위에 오버레이를 표시해 주므로, 앱에 이 기능을 구현해 놓으면 중요한 작업에 대한 사용자의 주의를 끌 수 있습니다. 하지만 이런 창이 사용자에게 방해될 수 있으므로, 앱이 권한을 요청해서 동의를 받아야 이 창을 표시할 수 있게 되어 있습니다. 이제 Android 12에서는 이러한 오버레이가 앱 콘텐츠 위에 표시되도록 할 지를 제어하는 기능을 제공합니다. 새로운 권한을 선언한 후, 앱의 창이 보일 때 모든 TYPE_APPLICATION_OVERLAY 창을 숨겨야 한다고 표시하도록 앱이 Window#setHideOverlayWindows()를 호출할 수 있습니다. 트랜잭션 확인 흐름(transaction confirmation flows)과 같은 중요한 화면을 표시할 때 이 동작을 수행하도록 선택할 수 있습니다. 더 자세한 내용은 여기서 확인하세요.
잠금 화면 알림 작업을 위해 확장된 보안(Extended security for lockscreen notification actions) - Android 12에는 기기 잠금 화면에 표시되는 알림에 대해 세분화된 개인정보 보호 및 보안 컨트롤이 추가됩니다. 이제 잠금 화면에서 바로 알림 액션을 수행할 때, 항상 사용자 인증을 받도록 알림 작업을 구성할 수 있습니다. 이를 위해, 기존에 알림 API를 통해 제공되는 알림 표시 여부 컨트롤 기능이 확장됩니다. 예를 들어 메시지를 삭제하거나 읽은 것으로 표시하기 전에 메시징 앱에서 인증을 요구하도록 할 수 있습니다. 더 자세한 내용은 여기서 확인하세요.
앱 해시 정보 액세스(Access to app digests) - Android 기기에 설치된 앱 패키지의 무결성(integrity)을 확인해야 하는 앱을 위해, 설치된 앱의 체크섬(checksum)을 플랫폼에 직접 쿼리할 수 있게 해주는 새로운 API를 발표합니다. SHA256, SHA512, Merkle Root 등의 여러 해시 알고리즘 중에서 선택할 수 있습니다. 체크섬을 요청하려면 앱의 패키지 이름, 필요한 체크섬 유형, 신뢰하는 설치 프로그램 인증서, 체크섬 수신을 위한 리스너로 PackageManager.requestChecksums()를 호출합니다. 플랫폼은 일치하는 체크섬을 반환하는데, 이는 설치 프로그램 앱(예: Google Play)에서 사전 계산해 제공하거나 플랫폼 자체적으로 계산합니다. 결과는 패키지 표시 여부 지침을 기준으로 필터링되므로, 매니페스트에서 관심 있는 패키지를 선언해야 합니다. 이 새로운 API는 체크섬을 더 간단하고 효율적으로 얻는 방법을 제공하고 개발자에게 속도와 보안에 최적화된 표준 공개 API의 안정성을 제공합니다. 이전 버전과의 호환을 위해 이전 버전인 API 15에도 동일한 기능을 제공하는 Jetpack 라이브러리 작업이 진행 중이니, 조만간 공개 될 자세한 내용에 계속해서 귀기울여 주세요.
위 내용과 기타 개인정보 보호 및 보안 변경 사항에 관한 자세한 내용은 여기에서 더 자세히 알아볼 수 있습니다.
더 나은 사용자 환경 도구(Better user experience tools)
사용자에게 보다 세련된 사용 환경과 더 나은 성능을 위한 여러 도구를 제공하고자 노력하고 있습니다. 이번 릴리스의 업데이트 사항 중 일부를 아래와 같이 소개해 드리겠습니다.
둥근 모서리 지원(Support for Rounded corners) - 최근에 출시되는 많은 기기에서 모서리가 둥근 화면을 사용해 깔끔하고 현대적인 디자인을 선보이지만, 앱 개발자 입장에서는 고려해야 할 사항이 몇 가지 더 추가되는 셈입니다. 개발자는 이런 기기에 훌륭한 UX를 제공하기 위해 둥근 모서리를 고려해 모서리 근처의 UI 요소가 잘리지 않도록 적절히 조정해야 합니다.
이때 도움이 되고자, 모서리가 둥근 모양인지 쿼리하고 세부 정보를 얻기 위한 새로운 API를 도입합니다. RoundedCorner는 반지름, 중앙점, 기타 데이터를 포함한, 모서리의 세부 정보를 갖고 있습니다. Display.getRoundedCorner()를 호출하여 각 둥근 모서리에 대한 완벽한 세부 정보를 얻을 수 있습니다. 또한, WindowInsets.getRoundedCorner()를 호출해 앱의 경계에 관한 모서리 세부 정보를 가져올 수 있습니다. 이런 API를 사용해 필요에 따라 UI 요소와 콘텐츠의 위치를 관리할 수 있습니다. 더 자세한 내용은 여기서 확인하세요.
PIP(Picture in Picture) 개선 - 동작 탐색 기능을 사용하는 사람들을 위해 홈 위치까지 스와이프할 때 앱이 PIP 모드로 전환하는 방식을 개선했습니다. 앱에서 자동 PIP를 사용할 때, 이제는 홈 위치까지 움직이는 애니메이션이 완료되기를 기다리는 대신 앱이 홈 위치에서 PIP 모드로 바로 전환됩니다. 따라서 더 부드럽게 전환되고, 인지 성능이 개선됩니다. 동영상 이외의 콘텐츠에 대한 PIP 창 크기 조정 애니메이션도 개선했습니다. 이제 앱에서 SeemlessResizeEnabled 플래그를 사용해 필요할 때 시스템에서 PIP Activity의 크기를 조정하도록 할 수 있습니다. Android 12에서는 PiP 창(window)을 화면의 왼쪽 또는 오른쪽 가장자리로 드래그하여 숨겨 놓는 기능도 지원합니다. 또한, PIP 창을 더 쉽게 조작할 수 있도록 탭 동작도 업데이트했습니다. 그래서 이제는 한 번 탭하면 컨트롤이 표시되고 두 번 탭하면 PIP 창 크기가 전환됩니다. 더 자세한 내용은 여기서 확인하세요.
부속 기기 앱을 깨어 있는 상태로 유지(Keeping companion device apps awake) - 스마트시계와 건강 관리(Fitness Tracker) 같은 부속 기기를 관리하는 앱의 경우 연결된 부속 기기가 근처에 있을 때 항상 앱이 실행 및 연결되도록 하기 어려울 수 있습니다. 이 문제를 더 쉽게 해결하기 위해 새로운 CompanionDeviceService API를 사용하여 Companion Device Manager를 확장할 예정입니다. 부속 기기를 관리하는 앱은 연결된 부속 기기가 근처에 있을 때마다 시스템이 앱을 깨우도록 이 서비스를 구현할 수 있습니다. 시스템은 기기가 근처에 있을 때는 항상 바인딩된 서비스를 유지하며, 기기가 범위 안팎으로 움직이거나 꺼질 때 서비스에 그 사실을 알려 앱이 필요에 따라 상태를 정리할 수 있도록 합니다. 또한, 앱은 스마트시계에 연결할 때 새로운 부속 기기 프로필(companion device profile)을 사용하여 관련된 여러 권한을 단 하나의 권한으로 묶음으로써 등록을 간소화할 수 있습니다. 더 자세한 내용은 여기서 확인하세요.
대역폭 추정 개선(Bandwidth estimation improvements) - 사용 환경을 맞춤 설정할 수 있도록 각 사용자에게 제공되는 일반적인 대역폭을 알아야 하는 개발자를 위해 향상된 대역폭 추정 기능을 제공합니다. 기기에서 모든 사용자에 대한 이동통신사 또는 Wi-Fi SSID당 총 처리량 추정 치, 네트워크 유형, 신호 수준을 검색할 수 있도록 기존 대역폭 추정 API(bandwidth estimation APIs)를 강화했습니다. 새 추정 기능은 다른 대부분의 추정 방법보다 쉽고 정확할 가능성이 높으므로, 한번 사용해 보신 후 얼마나 효과적인지 알려주세요.
더 쉬운 블러, 컬러 필터 및 기타 효과(Easier blurs, color filters and other effects) - Android 12에서는 View와 렌더링 계층 구조에 일반적인 그래픽 효과를 더 쉽게 적용할 수 있습니다. RenderEffect를 사용하여 블러, 컬러 필터 등을 어떤 RenderNode에든 적용할 수 있습니다. 이를 통해 내부 효과와 외부 효과를 순서대로 구성하는 연쇄 효과(chain effect)로 결합하거나 혼합할 수 있습니다. 또한, View.setRenderEffect(RenderEffect)를 호출하여 View에 직접 효과를 적용할 수도 있습니다(기본 RenderNode 활용).
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
RenderEffect로 View를 흐리게 표시
이렇게 하면 비트맵 데이터를 가져와 이미지를 처리하고 새 Bitmap을 만든 다음 ImageView에 다시 설정할 필요 없이, ImageView의 콘텐츠를 흐리게 표시할 수 있습니다. RenderEffect는 기존 렌더링 파이프라인을 활용하여 초과되는 계산을 최소화합니다.
한번 시험해보시고 여러분의 소감을 알려주세요! 더 자세한 내용은 여기서 확인하세요.
새 Window.setBackgroundBlurRadius() API를 사용하여 창 배경에 성에가 낀 유리 효과(frosted glass effect)를 만들 수도 있습니다. 이 방법으로 밀도와 범위를 제어하는 반지름을 설정할 수 있으며, 플랫폼은 앱의 창 경계 내에 있는 배경 콘텐츠에만 흐림 효과를 적용합니다. blurBehindRadius를 사용하여 창 뒤에 있는 모든 콘텐츠를 흐리게 만들어 부동 창(floating window)의 깊이 효과(depth effect)를 만들 수도 있습니다.
배경이 흐릿하고 뒷부분도 흐릿한 대화 창
앱 호환성(App compatibility)
\새 플랫폼 버전을 출시하면서 앱 호환성을 가장 우선 순위에 두고, 업데이트가 더욱 빠르고 원활하게 진행되도록 노력하고 있습니다. Android 12에서는 개발자에게 더 많은 시간을 드리기 위해 앱이 거쳐야 하는 대부분의 변경 사항을 선택할 수 있도록 했으며, 개발자가 더 신속하게 준비할 수 있도록 관련 도구와 프로세스를 업데이트했습니다.
Developer Preview 2로 순조롭게 릴리스를 진행하면서 전반적으로 안정성을 계속 개선하고 있습니다. 이제 여러분께서 새 기능 및 변경 사항을 시험해보시고 의견을 주시면 감사하겠습니다. 특히, API에 대한 의견 외에도 플랫폼 변경 사항이 여러분의 앱에 어떤 영향을 주는 지에 대해 알려주시길 부탁드립니다. 피드백 페이지에서 여러분의 의견을 들려주시거나 혹은 문제가 되는 부분에 대해 말씀 해주세요.
호환성 테스트를 시작하고 수행해야 할 작업을 파악하기에 좋은 기회이기도 합니다. Android 12 Beta 1로 호환 가능한 업데이트를 출시하실 수 있도록 이 작업을 일찍 진행하시기를 권장합니다. 현재는 앱의 targetSdkVersion을 변경할 필요가 없지만, 동작 변경 전환(behavior change toggle) 기능을 사용하여 Android 12의 옵트인 변경 사항으로 인해 앱이 어떤 영향을 받을 수 있을지 미리 알아보는 것이 좋습니다.
2021년 8월에 플랫폼 안정성 단계에 도달하면 앱에 표시되는 모든 시스템 동작, 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 TV에서 앱을 테스트하고 완전히 새로운 Google TV 경험을 즐길 수도 있습니다. 여기에서 자세히 알아보고 ADT-3 개발자 키트로 시작하세요.
자세한 내용은 Android 12 개발자 사이트를 참조하세요.