개발자용 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가 어둡게 바뀌고 이를 지원하는 앱의 어두운 테마가 사용 설정됩니다. 앱을 위한 맞춤형 어두운 테마를 빌드할 수도 있고, 시스템이 기존 테마에서 어두운 버전을 자동을 만들도록 하는 Force Dark(어두운 테마 강제 적용) 기능을 설정할 수도 있습니다. AppCompat의 DayNight 기능을 활용하여 이전 버전의 Android 사용자에게 어두운 테마를 제공할 수도 있습니다. 자세한 내용은 개발자 가이드를 참고하세요.

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

동작 탐색

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

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

설정 패널

이제 새로운 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를 통해 자막을 사용 설정하는 것은 물론 라이브 스트리밍 게임과 같은 인기 있는 사용 사례도 지원할 수 있습니다. 이 새로운 기능은 개인 정보 보호 및 저작권 보호를 염두에 두고 구축되었으므로, 한 앱이 다른 앱의 오디오를 캡처하는 기능은 제한적이며 오디오 재생 앱은 오디오 스트림의 캡처 여부를 완벽하게 제어할 수 있습니다. 자세한 내용은 이 블로그 게시물을 참고하세요.

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

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

어디서나 Vulkan 활용

고성능 3D 그래픽을 위한 오버헤드가 낮은 크로스 플랫폼 API가 구현됨에 따라 Android 10에서는 Vulkan의 영향력이 확대됩니다. Vulkan 1.1은 이제 Android 10 이상을 실행하는 모든 64비트 기기의 요구사항이며 모든 32비트 기기의 권장사항입니다. Google은 생태계에서 Vulkan의 지원이 상당한 추진력을 얻은 것으로 확인했습니다. Android N 이상을 실행하는 기기 중 53%가 Vulkan 1.0.3 이상을 지원합니다. Android 10의 새 요구사항에 따라 내년에는 채택 비율이 더 늘어날 것으로 예상됩니다.

연결

P2P 및 인터넷 연결 개선

Google에서는 Wi-Fi 스택을 리팩터링하여 개인 정보 보호와 성능을 개선하고 위치 정보 액세스 권한 없이도 IoT 기기 관리 및 인터넷 연결 제안과 같은 일반적인 사용 사례를 개선했습니다. 네트워크 연결 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은 Generational Garbage Collection을 ART의 Concurrent Copying (CC) Garbage Collector에 추가하여 시간과 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를 통한 호환성

앱에서 공개 API만 사용하는 방향으로 점차 전환되도록 Android 10에서는 비 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을 방문하세요.