개발자용 Android 10

Android 10은 세 가지 중요한 테마를 중심으로 구축되었습니다. 첫째, Android 10은 고급 머신러닝과 폴더블 및 5G 지원 휴대전화와 같은 새로운 기기 지원을 통해 모바일 혁신의 최첨단을 구축하고 있습니다. 다음으로 Android 10은 사용자에게 더 강력한 보호, 투명성, 제어 기능을 제공하는 약 50개의 기능을 통해 개인 정보 보호 및 보안에 중점을 둡니다. 마지막으로 Android 10은 개인과 가족이 기술과 더 나은 균형을 찾을 수 있도록 사용자의 디지털 웰빙 제어 기능을 확장합니다.

개발자를 위한 Android 10의 기능과 지금 바로 사용할 수 있는 방법을 살펴보겠습니다.

혁신과 새로운 경험

Android 10에서는 최신 하드웨어 및 소프트웨어 혁신 기술을 활용하여 사용자를 위한 놀라운 앱 환경을 빌드할 수 있습니다.

Android 10을 사용하면 앱을 폴더블 및 기타 대형 화면 기기에 최적화할 수 있습니다.

폴더블

강력한 멀티 윈도우 지원을 기반으로 하는 Android 10은 앱 창 전체에 걸쳐 멀티태스킹을 확장하고 화면 연속성을 제공하여 기기를 접거나 펼칠 때 앱 상태를 유지합니다. Android 10에서는 다중 재개를 지원하고 포커스가 있을 때 앱에 알리도록 onResumeonPause에 여러 가지 개선사항을 추가했습니다. 또한 폴더블 및 대형 화면에서 앱이 표시되는 방식을 관리할 수 있도록 resizeableActivity 매니페스트 속성의 작동 방식이 변경됩니다. 폴더블 기기용으로 빌드하려면 Android 스튜디오에서 폴더블 에뮬레이터를 가상 기기 (AVD)로 구성하면 됩니다. 폴더블에 맞게 앱을 최적화하는 방법에 관한 자세한 내용은 개발자 가이드를 참고하세요.

5G 네트워크

5G는 더 빠른 속도와 더 짧은 지연 시간을 지속적으로 제공할 것을 약속하며, Android 10은 5G를 위한 플랫폼 지원을 추가하고 이러한 개선사항을 활용할 수 있도록 기존 API를 확장합니다. 연결 API를 사용하여 기기의 고대역폭 연결이 있는지 감지하고 연결이 데이터 전송량 제한이 있는지 확인할 수 있습니다. 이를 통해 앱과 게임은 5G 사용자에게 풍부하고 몰입도 높은 환경을 맞춤설정할 수 있습니다.

알림의 스마트 답장

Android 10은 온디바이스 ML을 사용하여 메시지에 스마트 답장 또는 알림의 주소 지도 열기와 같은 상황별 작업을 알림에서 제안합니다. 앱은 별도의 작업 없이 이 기능을 즉시 활용할 수 있습니다. 시스템에서 제공하는 스마트 답장 및 작업은 기본적으로 알림에 직접 삽입됩니다. 원하는 경우 자체 답장 및 작업을 제공할 수도 있습니다. setAllowGeneratedReplies()setAllowSystemGeneratedContextualActions()를 사용하여 알림별로 스마트 답장을 선택 해제하면 됩니다.

스마트 답장은 알림 콘텐츠를 기반으로 작업을 제안할 수 있습니다.

어두운 테마

Android 10에는 시스템 전체에 어두운 테마가 추가됩니다. 어두운 테마는 조명이 어두운 곳에 적합하며 배터리를 절약하는 데 도움이 됩니다. 사용자는 설정으로 이동하거나 절전 모드를 사용 설정하여 시스템 전체에 적용되는 어두운 테마를 새로 활성화할 수 있습니다. 이렇게 하면 시스템 UI가 어둡게 변경되고 이를 지원하는 앱의 어두운 테마가 사용 설정됩니다. 앱의 맞춤 어두운 테마를 빌드하거나 시스템이 기존 테마에서 어두운 버전을 동적으로 생성할 수 있는 새로운 어두운 테마 강제 적용 기능을 선택할 수 있습니다. AppCompat의 DayNight 기능을 활용하여 이전 버전의 Android 사용자에게 어두운 테마를 제공할 수도 있습니다. 자세한 내용은 개발자 가이드를 참고하세요.

Android 10에서는 어두운 테마 강제 기능을 사용하여 앱의 어두운 테마를 동적으로 만들 수 있습니다.

동작 탐색

동작 탐색은 앱의 전체 화면 콘텐츠를 제공합니다.

Android 10에는 탐색 메뉴 영역을 없애고 앱이 전체 화면을 사용하여 더 풍부하고 몰입도 높은 환경을 제공할 수 있는 완전 동작 탐색 모드가 도입되었습니다. 표시되는 버튼이 아닌 가장자리 스와이프를 통해 익숙한 뒤로, 홈, 최근 항목 탐색 기능을 유지합니다. 동작 탐색과 원활하게 혼합하려면 탐색 메뉴 뒤에 그려서 더 넓은 화면으로 이동하여 몰입도 높은 환경을 만들어야 합니다. 이를 구현하려면 앱에서 setSystemUiVisibility() API를 사용하여 전체 화면을 배치한 다음 WindowInsets를 적절하게 처리하여 중요한 UI가 가리지 않도록 해야 합니다. 지금 앱 최적화를 시작하고 자세한 내용은 블로그 게시물 시리즈를 참고하세요.

설정 패널

이제 새로운 Settings Panel API를 통해 앱의 컨텍스트에서 직접 키 시스템 설정을 표시할 수 있습니다. 설정 패널은 인터넷 연결, NFC, 오디오 볼륨 등 사용자에게 필요할 수 있는 설정을 표시하기 위해 호출하는 플로팅 UI입니다. 예를 들어 브라우저에서 비행기 모드, Wi-Fi (근처 네트워크 포함), 모바일 데이터와 같은 연결 설정이 포함된 패널을 표시할 수 있습니다. 설정 패널을 표시하려면 새로운 Settings.Panel 작업 중 하나로 인텐트를 실행하면 됩니다.

공유 바로가기

바로가기를 공유하면 더 빠르고 쉽게 공유할 수 있으므로 사용자가 다른 앱으로 바로 이동하여 콘텐츠를 공유할 수 있습니다. 개발자는 연결된 콘텐츠가 있는 앱에서 특정 활동을 실행하는 공유 타겟을 게시할 수 있으며 이는 공유 UI에서 사용자에게 표시됩니다. 사전에 게시되므로 공유 UI가 실행되는 즉시 로드됩니다. 공유 바로가기는 앱 바로가기와 유사하며 동일한 ShortcutInfo API를 사용합니다. 이 API는 ShareTarget AndroidX 라이브러리에서도 지원됩니다. 자세한 내용은 샘플 앱을 참고하세요.

공유 바로가기를 사용하면 사용자가 콘텐츠가 첨부된 앱의 특정 활동으로 바로 이동할 수 있습니다.

사용자의 개인정보 보호

플랫폼의 더 강력한 보호 기능부터 개인 정보 보호를 염두에 두고 설계된 새로운 기능에 이르기까지 Android 10에서는 개인 정보 보호가 핵심입니다. 이전 버전을 기반으로 하는 Android 10에는 시스템 UI가 향상되고 권한이 강화되었으며 앱에서 사용할 수 있는 데이터에 관한 제한이 적용되어 개인 정보를 보호하고 사용자에게 더 많은 제어 기능을 제공하기 위한 광범위한 변경사항이 포함되어 있습니다. 앱에서 이를 지원하는 방법에 관한 자세한 내용은 개인 정보 보호 변경사항을 참고하세요.

이제 사용자는 앱이 포그라운드에 있을 때 위치 액세스 권한을 부여하도록 선택할 수 있습니다.

사용자에게 더 많은 위치 데이터 제어 권한 제공 - 사용자는 새로운 권한 옵션을 통해 위치 데이터를 더 세부적으로 제어할 수 있습니다. 이제 앱이 실제로 사용되는 (포그라운드에서 실행) 동안에만 위치에 액세스하도록 허용할 수 있습니다. 이렇게 하면 대부분의 앱에서 충분한 수준의 액세스 권한이 제공되지만 사용자에게는 투명성과 제어 기능이 크게 향상됩니다. 위치 변경사항에 관한 자세한 내용은 개발자 가이드 또는 블로그 게시물을 참고하세요.

네트워크 검색에서 위치 데이터 보호 - 대부분의 네트워크 검색 API에는 이미 대략적인 위치 정보 액세스 권한이 필요했습니다. Android 10에서는 대신 위치 정보 액세스 권한을 요청하여 이러한 API와 관련된 보호 기능을 강화합니다.

기기 추적 방지 - 앱은 추적에 사용될 수 있는 재설정할 수 없는 기기 식별자(예: 기기 IMEI, 일련번호 및 유사 식별자)에 더 이상 액세스할 수 없습니다. 또한 기본적으로 Wi-Fi 네트워크에 연결된 경우 기기의 MAC 주소가 무작위로 지정됩니다. 사용 사례에 적합한 식별자를 선택하는 데 도움이 되는 권장사항을 읽어보고 여기에서 세부정보를 확인하세요.

외부 저장소에서 사용자 데이터 보호 - Android 10에서는 사용자가 외부 저장소의 파일과 그 안의 앱 데이터를 더 잘 제어할 수 있도록 하기 위해 여러 가지 변경사항이 도입되었습니다. 앱은 비공개 샌드박스에 자체 파일을 저장할 수 있지만 MediaStore를 사용하여 공유 미디어 파일에 액세스하고 시스템 파일 선택 도구를 사용하여 새 다운로드 컬렉션의 공유 파일에 액세스해야 합니다. 자세한 내용은 여기를 참조하세요.

원치 않는 중단 차단 - Android 10은 앱이 백그라운드에서 시작되어 예기치 않게 포그라운드로 이동하여 다른 앱의 포커스를 차지하는 것을 방지합니다. 여기에서 자세히 알아보세요.

보안

Android 10에는 암호화, 플랫폼 강화 및 인증의 발전을 통해 사용자의 보안을 강화하는 여러 기능이 도입되었습니다. 자세한 내용은 Android 10 보안 업데이트를 참조하세요.

저장소 암호화 - Android 10으로 출시되는 모든 호환 기기는 사용자 데이터를 암호화해야 합니다. 암호화의 효율성을 높이기 위해 Android 10에는 새로운 암호화 모드인 Adiantum이 포함되어 있습니다.

TLS 1.3 기본값 - Android 10에서는 성능 이점과 보안 강화를 제공하는 TLS 표준의 주 버전인 TLS 1.3을 기본적으로 사용 설정합니다.

플랫폼 강화 - Android 10에는 플랫폼의 여러 보안 중요한 영역을 위한 강화도 포함되어 있습니다.

생체 인식 개선 - Android 10은 얼굴과 같은 수동 인증 방법을 지원하고 암시적 및 명시적 인증 흐름을 추가하기 위해 BiometricPrompt 프레임워크를 확장합니다. 명시적 흐름에서 사용자는 인증 중에 TEE의 트랜잭션을 명시적으로 확인해야 합니다. 암시적 흐름은 수동 인증을 사용하는 트랜잭션을 위한 가벼운 대안으로 설계되었습니다. Android 10에서는 필요한 경우 기기 사용자 인증 정보의 대체도 개선합니다. 자세한 내용은 여기를 참조하세요.

카메라 및 미디어

사진의 다이내믹 포커스

이제 앱에서 JPEG, 깊이 관련 요소와 관련된 XMP 메타데이터, 동일한 파일에 삽입된 깊이 및 신뢰도 맵으로 구성된 다이내믹 포커스 이미지를 요청할 수 있습니다. 이를 통해 앱에서 특수한 블러와 빛망울 효과 옵션을 제공할 수 있습니다. 다이내믹 포커스는 생태계를 위한 개방형 형식이며 Google은 파트너와 협력하여 Android 10 이상을 실행하는 기기에서 이 기능을 제공하고 있습니다.

다이내믹 포커스 이미지를 사용하면 앱에서 특수한 흐림 효과와 빛망울 효과 옵션을 제공할 수 있습니다.

오디오 재생 캡처

이제 오디오를 재생하는 앱은 다른 앱이 새 오디오 재생 캡처 API를 사용하여 오디오 스트림을 캡처하도록 허용할 수 있습니다. 이 API를 사용하면 자막 제공 및 자막 사용 설정 외에도 실시간 스트리밍 게임과 같은 일반적인 사용 사례를 지원할 수 있습니다. Google은 개인 정보 보호 및 저작권 보호를 염두에 두고 이 새로운 기능을 구축했습니다. 따라서 앱이 다른 앱의 오디오를 캡처하는 기능이 제한되어 오디오 스트림의 캡처 가능 여부를 완전히 제어할 수 있습니다. 자세한 내용은 이 블로그 게시물을 참조하세요.

새로운 오디오 및 동영상 코덱

Android 10은 미디어 제공업체가 더 적은 대역폭을 사용하여 Android 기기에 고화질 동영상 콘텐츠를 스트리밍할 수 있는 오픈소스 동영상 코덱 AV1을 추가로 지원합니다. 또한 Android 10은 음성 및 음악 스트리밍에 최적화된 로열티 없는 개방형 코덱인 Opus와 지원되는 기기에서 HDR(High Dynamic Range) 동영상용 HDR10+를 사용하는 오디오 인코딩을 지원합니다. MediaCodecInfo API는 Android 기기의 동영상 렌더링 기능을 확인하는 더 쉬운 방법을 도입합니다. 특정 코덱에서 지원되는 크기 및 프레임 속도 목록을 얻을 수 있습니다.

네이티브 MIDI API

C++로 오디오를 처리하는 앱을 위해 Android 10에는 NDK를 통해 MIDI 기기와 통신하는 네이티브 MIDI API가 도입되었습니다. 이 API를 사용하면 비블로킹 읽기를 사용하여 오디오 콜백 내에서 MIDI 데이터를 검색할 수 있으므로 MIDI 메시지의 처리 지연 시간을 단축할 수 있습니다. 여기에서 샘플 앱과 소스 코드를 사용하여 시도해 보세요.

마이크 방향 지정 및 확대/축소

Android 10에서는 새로운 MicrophoneDirection API를 통해 오디오 캡처를 더욱 세밀하게 제어할 수 있습니다. API를 사용하여 오디오 녹음을 할 때 선호하는 마이크 방향을 지정할 수 있습니다. 예를 들어 사용자가 '셀카' 동영상을 찍을 때 오디오 녹음을 위한 전면 마이크를 요청할 수 있습니다 (있는 경우). 또한 이 API에는 확대/축소 가능한 마이크를 제어하는 표준 방법이 도입되어 앱에서 녹음 필드 크기를 제어할 수 있습니다.

어디서나 Vulkan 활용

Android 10은 고성능 3D 그래픽을 위한 오버헤드가 낮은 크로스 플랫폼 API 구현을 통해 Vulkan의 영향력을 확장합니다. 이제 Vulkan 1.1은 Android 10 이상을 실행하는 모든 64비트 기기의 요구사항이며 모든 32비트 기기의 권장사항입니다. Android N 이상을 실행하는 기기 중 53%가 Vulkan 1.0.3 이상을 지원하는 등 생태계에서 Vulkan 지원이 이미 크게 증가하고 있습니다. Android 10의 새로운 요구사항에 따라 내년에는 채택률이 더 높아질 것으로 예상됩니다.

연결

P2P 및 인터넷 연결 개선

개인 정보 보호와 성능을 개선하고 위치 정보 액세스 권한 없이 IoT 기기 관리 및 인터넷 연결 제안과 같은 일반적인 사용 사례를 개선하기 위해 Wi-Fi 스택을 리팩터링했습니다. 네트워크 연결 API를 사용하면 구성, 다운로드 또는 인쇄와 같은 P2P 기능에서 로컬 Wi-Fi를 통해 IoT 기기를 더 쉽게 관리할 수 있습니다. 네트워크 추천 API를 사용하면 앱에서 사용자에게 인터넷 연결을 위해 기본 Wi-Fi 네트워크를 표시할 수 있습니다.

Wi-Fi 성능 모드

이제 앱에서 고성능 및 짧은 지연 시간 모드를 사용 설정하여 적응형 Wi-Fi를 요청할 수 있습니다. 실시간 게임, 활성 음성 통화 및 유사한 사용 사례와 같이 짧은 지연 시간이 사용자 환경에 중요한 경우에 큰 도움이 될 수 있습니다. 플랫폼은 기기 펌웨어와 함께 작동하여 최저 전력 소비 요구사항을 충족합니다. 새로운 성능 모드를 사용하려면 WIFI_MODE_FULL_LOW_LATENCY 또는 WIFI_MODE_FULL_HIGH_PERFWifiManager.WifiLock.createWifiLock()을 호출합니다. 이러한 모드에서는 플랫폼이 기기 펌웨어와 함께 작동하여 최저 전력 소비 요구사항을 충족합니다.

Android 기초

ART 최적화

ART 런타임이 개선되면 별도의 작업 없이도 앱을 더 빠르게 시작하고, 메모리를 덜 사용하며, 더 원활하게 실행할 수 있습니다. Google Play에서 제공하는 ART 프로필을 사용하면 ART가 앱이 실행되기 전에 앱의 일부를 미리 컴파일할 수 있습니다. 런타임에 Android 10은 ART의 동시 복사 (CC) 가비지 컬렉터에 세대 가비지 컬렉션을 추가하여 시간과 CPU 측면에서 가비지 컬렉션을 더 효율적으로 만들고 버벅거림을 줄이며 저사양 기기에서 앱이 더 잘 실행되도록 합니다.

이 차트는 Play 프로필을 사용하여 테스트할 때 특정 앱의 시작 시간 증가율을 보여줍니다.

Neural Networks API 1.2

다양한 성능 최적화와 함께 ARGMAX, ARGMIN, 양자화된 LSTM을 포함한 60개의 새로운 작업을 추가했습니다. 이렇게 하면 객체 감지, 이미지 세분화와 같은 훨씬 더 광범위한 모델을 가속화하기 위한 기반이 마련됩니다. Google에서는 NNAPI 1.2 지원을 최적화하고 출시하기 위해 하드웨어 공급업체 및 TensorFlow와 같은 인기 있는 머신러닝 프레임워크와 협력하고 있습니다.

Thermal API

기기가 너무 뜨거워지면 CPU 또는 GPU가 제한될 수 있으며 이로 인해 예상치 못한 방식으로 앱과 게임에 영향을 줄 수 있습니다. 이제 Android 10에서 앱과 게임은 Thermal API 를 사용하여 기기의 변경사항을 모니터링하고 정상 온도를 복원하도록 조치를 취할 수 있습니다. 예를 들어 스트리밍 앱은 해상도/비트 전송률 또는 네트워크 트래픽을 줄일 수 있고, 카메라 앱은 플래시 또는 과도한 이미지 보정을 사용 중지하거나, 게임은 프레임 속도 또는 다각형 테셀레이션을 줄일 수 있습니다. 자세한 내용은 여기를 참조하세요.

공개 API를 통한 호환성

Android 10에서는 앱이 점진적으로 공개 API만 사용하도록 전환할 수 있도록 비 SDK 인터페이스에 관한 제한을 계속 확장합니다. 현재 사용 중인 인터페이스가 제한된 경우 대신 인터페이스의 새로운 공개 API를 요청할 수 있습니다. 전환을 지원하고 앱이 손상되는 것을 방지하기 위해 Google에서는 앱이 Android 10 (API 29)을 타겟팅할 때만 제한을 사용 설정합니다. 제한사항에 관한 자세한 내용은 개발자 가이드를 참고하세요.

더욱 빠른 업데이트, 최신 코드

Android 10은 기기 제조업체와 실리콘 제조업체의 기본 기기 코드 및 Android 간에 테스트 가능한 일관된 인터페이스를 제공하는 프로젝트 Treble을 통해 더 빠르게 업데이트할 수 있도록 빌드되었습니다. 기기 제조업체는 Treble을 통해 더 저렴한 비용으로 더 빠르고 Treble 호환 기기에 Android 10을 제공할 수 있습니다.

Android 10은 Android 사용자를 보호하고 Google Play에서 직접 중요한 코드 변경으로 기기를 최신 상태로 유지하는 새로운 기술인 Project Mainline(공식 명칭 Google Play 시스템 업데이트)을 지원하는 첫 번째 버전이기도 합니다. Google Play 시스템 업데이트를 사용하면 기기 제조업체의 전체 시스템 업데이트를 요구하지 않고도 Android 10 이상을 실행하는 모든 기기에서 특정 내부 구성요소를 업데이트할 수 있습니다.

개발자에게는 Android 10의 이러한 업데이트를 통해 여러 기기에서 광범위하게 플랫폼 구현의 일관성을 높이고 시간이 지남에 따라 균일성을 높여 개발 및 테스트 비용을 절감할 수 있을 것으로 예상됩니다.

시작하기

Android 10용 전체 개발자 리소스는 developer.android.com/10을 참고하세요.