개발자용 Android 10

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

Android 10에 포함된 개발자용 기능과 지금 바로 사용할 수 있는 방법을 살펴보세요.

혁신과 새로운 경험

Android 10을 사용하면 최신 하드웨어 및 소프트웨어 혁신을 활용하여 사용자를 위한 놀라운 앱 환경을 구축할 수 있습니다.

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

폴더블

Android 10은 강력한 멀티 윈도우 지원을 기반으로 앱 창 전반에서 멀티태스킹을 확장하고 화면 연속성을 제공하여 기기가 접히거나 펼쳐질 때 앱 상태를 유지합니다. Android 10에서는 onResume 및 onPause에 여러 개선사항을 추가하여 다중 재개를 지원하고 앱에 포커스가 있을 때 앱에 알립니다. 또한 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 요소가 가려지지 않도록 해야 합니다. 지금 바로 앱 최적화를 시작하고 자세한 내용은 블로그 게시물 시리즈를 참고하세요.

설정 패널

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

공유 바로가기

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

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

사용자의 개인정보 보호

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

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

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

네트워크 검사에서 위치 데이터 보호 - 네트워크를 검사하는 대부분의 API에는 이미 대략적인 위치 정보 액세스 권한이 필요합니다. Android 10에서는 정확한 위치 정보 액세스 권한을 요구하여 이러한 API의 보호를 강화합니다.

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

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

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

보안

Android 10에서는 암호화, 플랫폼 강화, 인증의 발전을 통해 사용자를 더 안전하게 보호하는 여러 기능을 도입했습니다. Android 10 보안 업데이트에 관해 자세히 알아보세요.

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

기본적으로 TLS 1.3 사용 - Android 10은 기본적으로 TLS 1.3을 사용 설정합니다. 이는 성능 이점과 향상된 보안을 제공하는 TLS 표준의 주요 수정사항입니다.

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

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

카메라 및 미디어

사진의 다이내믹 포커스

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

동적 심도 이미지를 사용하면 앱에서 특수한 블러 및 빛망울 효과 옵션을 제공할 수 있습니다.

오디오 재생 캡처

이제 오디오를 재생하는 모든 앱은 새로운 오디오 재생 캡처 API를 사용하여 다른 앱이 오디오 스트림을 캡처하도록 허용할 수 있습니다. 이 API를 사용하면 자막 및 자막 방송을 사용 설정할 수 있을 뿐만 아니라 게임 라이브 스트리밍과 같은 인기 있는 사용 사례를 지원할 수 있습니다. Google은 개인 정보 보호 및 저작권 보호를 염두에 두고 이 새로운 기능을 빌드했으므로 앱이 다른 앱의 오디오를 캡처하는 기능은 제한되며, 앱은 오디오 스트림을 캡처할 수 있는지 여부를 완전히 제어할 수 있습니다. 자세한 내용은 이 블로그 게시물을 참고하세요.

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

Android 10은 오픈소스 동영상 코덱 AV1을 지원하므로 미디어 제공업체는 더 적은 대역폭을 사용하여 고화질 동영상 콘텐츠를 Android 기기로 스트리밍할 수 있습니다. 또한 Android 10은 음성 및 음악 스트리밍에 최적화된 개방형 로열티 없음 코덱인 Opus를 사용한 오디오 인코딩과 이를 지원하는 기기에서 하이 다이내믹 레인지 동영상을 위한 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의 Google 구현을 통해 Vulkan의 영향력을 확대합니다. Vulkan 1.1은 이제 Android 10 이상을 실행하는 모든 64비트 기기의 요구사항이며 모든 32비트 기기의 권장사항입니다. Android N 이상을 실행하는 기기 중 53%가 Vulkan 1.0.3 이상을 지원하는 등 생태계에서 Vulkan 지원이 이미 상당한 탄력을 받고 있습니다. Android 10의 새로운 요구사항으로 인해 내년에는 채택률이 더욱 향상될 것으로 예상됩니다.

연결

P2P 및 인터넷 연결 개선

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

Wi-Fi 성능 모드

이제 앱은 고성능 및 짧은 지연 시간 모드를 사용 설정하여 적응형 Wi-Fi를 요청할 수 있습니다. 이는 실시간 게임, 활성 음성 통화 및 유사한 사용 사례와 같이 짧은 지연 시간이 사용자 환경에 중요한 경우에 큰 이점이 될 수 있습니다. 플랫폼은 기기 펌웨어와 함께 작동하여 가장 낮은 전력 소비로 요구사항을 충족합니다. 새 성능 모드를 사용하려면 WIFI_MODE_FULL_LOW_LATENCY 또는 WIFI_MODE_FULL_HIGH_PERF를 사용하여 WifiManager.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은 하드웨어 공급업체 및 TensorFlow와 같은 인기 있는 머신러닝 프레임워크와 협력하여 NNAPI 1.2 지원을 최적화하고 출시하고 있습니다.

Thermal API

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

공개 API를 통한 호환성

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

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

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

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

개발자의 경우 Android 10의 이러한 업데이트가 기기 전반에서 플랫폼 구현의 일관성을 높이고 시간이 지남에 따라 균일성을 높여 개발 및 테스트 비용을 줄이는 데 도움이 될 것으로 기대합니다.

시작하기

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