Android 10 기능 및 API

Android 10에는 사용자와 있습니다. 이 문서에서는 개발자를 위한 기능을 소개합니다.

API에 대해 알아보려면 API 차이점 보고서를 참조하거나 Android API 참조 — '추가된 API'를 API 수준 29' 또한 Android 10의 동작을 확인하세요. (API 레벨 29를 타겟팅하는 앱모든 앱) 및 개인 정보 보호 플랫폼 변경이 발생할 수 있는 영역을 알아봅니다. 앱에 영향을 미칩니다.

보안 기능 향상

Android 10에는 다양한 보안 기능이 도입되는데, 다음 섹션에 요약됩니다

향상된 생체 인식 인증 대화상자

Android 10은 생체 인식 인증 지원:

  • 생체 인식 인증 기능을 확인합니다.
  • 사용자가 생체 인식 입력을 사용하여 인증할 수 없는 경우 기기 PIN, 패턴 또는 비밀번호를 사용하여 인증하도록 허용하는 대체 메커니즘이 제공됩니다.
  • 사용자 확인 후 사용자 확인을 요구하지 않도록 시스템에 지시하는 힌트 암시적 생체 인식 모달리티를 사용하여 인증되었습니다. 예를 들어 사용자가 모든 요청을 한 후에는 추가 확인이 필요하지 않다고 얼굴 인증을 사용하여 인증됩니다.

APK에서 직접 삽입된 DEX 코드 실행

Android 10부터는 삽입된 DEX를 실행하도록 플랫폼에 지시할 수 있습니다. 앱의 APK 파일에서 직접 가져올 수 있습니다. 이 옵션은 네트워크에 로컬로 컴파일된 코드를 변조하여 있습니다.

자세한 내용은 APK에서 직접 삽입된 DEX 코드를 실행합니다.

TLS 1.3 지원

Android 10은 TLS 1.3 TLS 1.3은 성능 이점과 향상된 보안을 포함하는 TLS 표준입니다. Google의 벤치마크에 따르면 최대 40%의 보안 연결을 설정할 수 있으며 더 빠릅니다

TLS 1.3 구현에 관한 자세한 내용은 모든 앱의 동작 변경사항 페이지에서 TLS 섹션을 참고하세요.

공개 Conscrypt API

Android 10부터 Conscrypt 보안 제공자에는 다음이 포함됩니다. 공개 API를 제공합니다.

이 클래스에 속한 클래스 모음은 android.net.ssl에 정적이 포함되어 있습니다. 일반 API에서 사용할 수 없는 기능에 액세스하기 위한 javax.net.ssl API 이러한 클래스의 이름은 복수형으로 추론할 수 있습니다. javax.net.ssl 클래스의 하위 클래스입니다. 예를 들어 javax.net.ssl.SSLSocket 인스턴스는 대신 SSLSockets

연결 기능

Android 10에는 네트워킹 및 연결과 관련한 몇 가지 개선 사항이 포함되어 있습니다.

Wi-Fi 네트워크 연결 API

Android 10은 P2P 연결 지원을 추가로 지원합니다. 이 기능을 사용하면 앱에서 사용자에게 제안하는 액세스 포인트를 변경하라는 메시지를 대상 디바이스는 WifiNetworkSpecifier 드림 요청된 네트워크의 속성을 설명할 수 있습니다. P2P 연결은 네트워크를 제공하지 않는 목적으로 사용되는 Chromecast 및 Google Home 하드웨어와 같은 보조 기기에서 사용할 수 있습니다.

자세한 내용은 P2P용 Wi-Fi 네트워크 요청 API를 참고하세요. 연결로 이동합니다.

Wi-Fi 네트워크 제안 API

Android 10에는 사용자에게 연결하라는 메시지를 표시하는 앱 지원이 추가되었습니다. Wi-Fi 액세스 포인트에 연결할 수 있습니다. 연결할 네트워크를 제안할 수 있습니다. 있습니다. 궁극적으로 플랫폼이 사용자의 앱과 다른 앱의 입력을 기반으로 수락할 액세스 포인트를 선택합니다.

이 기능에 대한 자세한 내용은 Wi-Fi 추천

Wi-Fi 고성능 및 짧은 지연 시간 모드 개선

Android 10에서는 기본 모뎀에 지연 시간을 최소화합니다

Android 10은 고성능을 효과적으로 지원하기 위해 Wi-Fi 잠금 API를 확장합니다. 두 가지 주요 옵션이 있습니다 고성능 및 절전 모드를 위해 Wi-Fi 절전이 짧은 지연 시간 모드에서 추가 지연 시간 최적화가 사용 설정될 수 있음 (모뎀 지원에 따라 다름)

저지연 모드는 잠금을 획득하는 애플리케이션이 포그라운드에서 실행되고 화면이 켜져 있는 경우. 지연 시간이 짧은 모드는 특히 실시간 모바일 게임 애플리케이션에 유용합니다.

DNS 리졸버에서 전문 검색

Android 10은 DNS-over-TLS 모드를 모두 지원합니다 이전에는 플랫폼 DNS가 리졸버는 A 및 AAAA 레코드만 지원하여 특정 IP 주소만 조회할 수 있음 다른 레코드 유형은 지원하지 않았습니다. DnsResolver API는 일반적인 비동기 해상도를 사용해 SRV, NAPTR 등을 조회할 수 있습니다. 레코드 유형입니다. 응답을 파싱하는 것은 앱에서 실행합니다.

NDK 기반 앱의 경우 android_res_nsend를 참고하세요.

Wi-Fi 간편 연결

Android 10에서는 간편 연결을 사용해 지원 중단된 WPS 대신에 피어 기기에 관한 Wi-Fi 사용자 인증 정보를 프로비저닝할 수 있습니다. 앱은 ACTION_PROCESS_WIFI_EASY_CONNECT_URI 인텐트를 사용하여 간편 연결을 설정과 프로비저닝 플로우에 통합할 수 있습니다.

이 기능에 대한 자세한 내용은 Wi-Fi 간편 연결.

Wi-Fi Direct connection API

Android 10에서 WifiP2pConfigWifiP2pManager API 클래스가 업데이트되었습니다. Wi-Fi Direct에 대한 빠른 연결 설정 기능을 지원하기 위해 사전에 결정된 정보를 기반으로 합니다. 이 정보는 부채널을 통해 공유됩니다. 블루투스 또는 NFC로 전송할 수 있습니다.

다음 코드 샘플은 미리 결정된 정보를 사용하여 그룹을 만드는 방법을 보여줍니다.

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

자바

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

사용자 인증 정보를 사용하여 그룹에 참여하려면 manager.createGroup()을 있습니다.

Kotlin

manager.connect(channel, config, null)

자바

manager.connect(channel, config, null);

블루투스 LE 연결 지향 채널(CoC)

Android 10은 앱에서 BLE CoC 연결을 사용하여 더 큰 데이터를 전송할 수 있도록 지원합니다. 두 개의 BLE 장치 간에 스트리밍됩니다. 이 인터페이스는 블루투스와 구현 간소화를 위한 연결 메커니즘의 한 가지 예입니다.

통신 기능

Android 10에는 통신과 관련한 몇 가지 개선 사항이 포함되어 있습니다.

통화 품질 개선

Android 10에는 진행 중인 앱의 품질에 관한 정보를 수집하는 기능이 네트워크의 품질을 포함한 IP 멀티미디어 하위 시스템 (IMS) 호출 이 기능을 지원하는 기기에서 다운로드할 수 있습니다

통화 선택 및 발신번호 표시

Android 10은 앱에서 지원하지 않는 통화를 식별할 수 있는 수단을 제공합니다. 스팸 전화로 신고하고 스팸 전화로 사용자를 대신하여 자동으로 거부됩니다. 차단된 통화에 관한 정보 통화 기록에 차단된 통화로 기록되므로 사용자의 통화를 줄일 수 있습니다 이 API를 사용하면 통화 선택 기능을 제공하기 위해 사용자로부터 READ_CALL_LOG 권한을 얻기 위해 발신번호 표시 기능도 제공됩니다

통화 리디렉션 서비스 API

Android 10에서는 통화 인텐트를 처리하는 방법이 변경되었습니다. 이 NEW_OUTGOING_CALL 브로드캐스트가 지원 중단되었으며 CallRedirectionService API CallRedirectionService API는 Android 플랫폼에서 거는 발신 전화를 수정할 수 있습니다. 예를 들어 서드 파티 앱이 통화를 취소하고 VoIP를 통해 통화 경로를 변경할 수 있습니다.

외부 저장소에 파일을 만드는 기능 개선 사항

범위 지정 스토리지 Android 10에는 다음과 같은 외부 애플리케이션 관련 기능이 추가되었습니다. 저장용량:

미디어 및 그래픽

Android 10에는 다음과 같은 새로운 미디어 및 그래픽 기능과 API가 도입되었습니다.

오디오 입력 공유

Android 10에는 두 개의 앱이 동시에 오디오 입력을 공유할 수 있는 기능이 추가되었습니다. 자세한 내용은 오디오 입력 공유를 참조하세요.

오디오 재생 캡처

Android 10은 앱에 다른 앱의 오디오 재생을 캡처하는 기능을 제공합니다. 자세한 내용은 재생 캡처를 참조하세요.

MediaStyle 알림의 탐색 막대

Android 10부터 MediaStyle 알림에 탐색 막대가 표시됩니다. 탐색바는 시작부터 종료까지 PlaybackState.getPosition()님, 경우에 따라 탐색바를 사용하여 재생 중인 곳을 있습니다. 탐색 막대의 모양과 동작은 다음 규칙에 의해 제어됩니다.

  • 활성 MediaSession 및 지속 시간이 있으면 탐색 막대가 표시됩니다. (MediaMetadata.METADATA_KEY_DURATION로 지정)이 0보다 큽니다. 즉, 실시간 스트리밍 및 라디오 방송
  • 세션에서 ACTION_SEEK_TO를 구현하면 사용자가 탐색바를 드래그할 수 있습니다. 재생 위치를 제어할 수 있습니다.

네이티브 MIDI API

Android 네이티브 MIDI API(AMidi)를 사용하면 애플리케이션 개발자는 다음 기능을 사용할 수 있습니다. C/C++ 코드로 MIDI 데이터를 주고받으며 C/C++ 오디오/제어 로직을 사용하고 JNI의 필요성을 최소화하는 방법을 알아봅니다.

자세한 내용은 Android 네이티브 MIDI API를 참조하세요.

MediaCodecInfo 개선 사항

Android 10은 MediaCodecInfo를 통해 코덱에 대한 정보를 찾을 수 있습니다.

자세한 내용은 미디어 코덱을 참조하세요.

Thermal API

기기가 너무 뜨거워지면 CPU 또는 GPU가 제한될 수 있으며 이로 인해 앱과 게임에 예상치 못한 방식으로 영향을 줄 수 있습니다. 복잡한 그래픽과 무거운 그래픽을 사용하는 앱 지속적인 네트워크 활동이 문제가 발생할 가능성이 더 높으며, 이들은 칩셋과 코어 주파수, 무선 주파수 대역의 수준에 따라 통합, 기기 패키징 및 폼 팩터입니다.

Android 10에서는 앱과 게임이 Thermal API를 사용하여 전원 공급 장치가 제대로 작동하지 않도록 알 수 있습니다. 앱이 리스너를 등록 PowerManager를 통해 약함, 보통에서 심각에 이르기까지 지속적인 열 상태를 보고합니다. 중요, 긴급, 종료의 세 가지 옵션이 있습니다.

기기에서 열 응력을 보고하면 앱과 게임이 이를 백오프함으로써 도움이 될 수 있습니다. 다양한 방식으로 전력 사용량을 줄이기 위해 지속적으로 활동해야 합니다. 예를 들어 해상도/비트 전송률 또는 네트워크 트래픽을 감소시킬 수 있는 스트리밍 앱이 플래시나 대규모 이미지 보정을 비활성화할 수 있다면 프레임 속도 또는 다각형 테셀레이션이 발생하면 미디어 앱은 스피커 볼륨을 줄이거나 지도 앱은 GPS를 끌 수 있습니다.

Thermal API를 사용하려면 새로운 기기 HAL 레이어가 필요합니다(현재 지원됨). Google은 Android 10을 실행하는 Pixel 기기에서 가능한 한 빨리 생태계에 광범위한 지원을 제공할 것입니다.

카메라 및 이미지

Android 10에는 다음과 같은 새로운 카메라와 이미지 관련 기능이 도입되었습니다.

흑백 카메라 지원

흑백 카메라 기능은 Android 9(API 레벨 28)에서 처음으로 도입되었습니다. Android 10에는 흑백 카메라 지원에 관한 몇 가지 향상된 기능이 추가되었습니다.

  • 메모리 효율 향상을 위한 Y8 스트림 형식 지원
  • 흑백 RAW DNG 캡처 지원
  • 일반 악성코드를 구별하기 위해 MONO 및 NIR CFA 열거 도입 흑백 카메라와 근적외선 카메라 등이죠.

이 기능을 사용하여 네이티브 흑백 이미지를 캡처할 수 있습니다. 논리 물리적 하위 카메라로 흑백 카메라를 사용하여 저조도 이미지 품질을 높입니다.

다이내믹 포커스 형식

Android 10부터 카메라는 이미지의 깊이 데이터를 DDF (Dynamic Depth Format)라는 새 스키마를 사용합니다. 앱에서는 JPG 이미지와 해당 깊이 메타데이터를 모두 요청하고, 이 정보를 사용하여 원본을 수정하지 않고 후처리 시 원하는 블러 적용 이미지 데이터입니다.

이 형식의 사양은 다이내믹 포커스 형식.

고효율 이미지 파일 형식

고효율 이미지 파일 (HEIF) 형식은 표준 이미지 및 동영상 형식입니다. 는 향상된 인코딩과 더 작은 파일 크기를 제공합니다. 다른 파일 형식을 지원합니다.

파일 형식에 대한 자세한 내용은 다음을 참조하세요. HEIC

다중 카메라 개선 사항

Android 10에서는 여러 카메라를 단일 논리 카메라로 통합함으로써 Android 9 (API 수준 28)에 도입된 기능입니다. 다음이 추가되었습니다. Camera2 API:

접근성 서비스 API

Android 10에는 다음과 같은 새로운 접근성 서비스 기능 및 API가 도입되었습니다.

AccessibilityNodeInfo 입력 키 플래그

Android 10부터 isTextEntryKey() 드림 지정된 AccessibilityNodeInfo가 텍스트 엔트리 키를 나타내는지 확인합니다. 키보드 또는 키패드의 일부분입니다.

접근성 대화상자 음성 피드백

사용자가 앱을 시작하기 위해 접근성 바로가기를 실행해야 하는 경우 Android 10을 사용하면 대화상자를 서비스에서 요청하는 경우 텍스트 음성 변환 프롬프트가 함께 표시됩니다.

제스처 탐색이 사용 설정된 경우의 접근성 단축키

동작 탐색 기능이 사용 설정된 경우 Android 10에서는 접근성 기능이 버튼이 선택 가능합니다. 접근성 서비스 메뉴에 액세스하려면 사용자는 다음 동작 중 하나를 실행합니다.

  • 두 손가락을 사용하여 위로 스와이프
  • 두 손가락을 사용하여 위로 스와이프 후 유지

물리적 키보드의 접근성 바로가기

Android 10에서는 사용자가 기기의 화면에서 접근성 바로가기를 트리거할 수 있습니다. Control+Alt+Z를 눌러 물리적 키보드로 이동합니다.

소프트 키보드 컨트롤러 향상

Android 10에서 접근성 서비스는 연결된 하드 키보드가 감지된 경우에도 키보드가 표시됩니다. 사용자는 이 동작을 재정의할 수 있습니다.

사용자 정의 접근성 시간 제한

Android 10에서는 getRecommendedTimeoutMillis() API를 도입합니다. 이 메서드는 대화형 및 비대화형 UI 요소가 있습니다. 반환 값은 두 사용자 모두의 영향을 받습니다. 환경설정 및 접근성 서비스 API가 포함됩니다.

자동 완성 향상

Android 10에서는 자동 완성 서비스가 다음과 같이 향상되었습니다.

호환성 관련 자동 완성 요청

FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST 플래그를 사용하면 자동 완성 요청이 호환성 모드를 통해 생성되었는지 확인할 수 있습니다.

사용자 이름과 비밀번호 동시에 저장

애플리케이션이 여러 활동을 사용하여 특정 요청을 처리하는 사용자 이름, 비밀번호 및 기타 필드를 표시하려면 SaveInfo.FLAG_DELAY_SAVE 드림 플래그.

저장 UI와 사용자 상호작용

작업을 설정하여 저장 대화상자에서 비밀번호 입력란을 표시하거나 숨길 수 있습니다. 리스너에 전달하여 해당 비밀번호의 공개 상태를 변경할 수 있습니다. 원격 뷰입니다.

데이터세트 업데이트 지원

자동 완성은 기존 비밀번호를 업데이트할 수 있습니다. 예를 들어 비밀번호를 이미 저장한 상태에서 새 비밀번호를 저장하면 자동 완성 기능에서 새 비밀번호를 저장하는 대신 기존 비밀번호를 업데이트하라는 메시지를 표시합니다.

필드 분류 향상

Android 10에서는 필드 분류 API가 다음과 같이 향상되었습니다.

UserData.Builder 생성자

UserData.Builder 드림 생성자가 Builder 패턴에 더 잘 맞도록 변경되었습니다.

여러 유형의 카테고리 ID에 대한 값 매핑 허용

UserData.Builder인치 Android 10에서는 이제 값을 여러 유형의 카테고리 ID에 매핑할 수 있습니다. 포함 이전 버전에서는 값이 두 번 이상 추가되면 예외가 발생했습니다.

신용카드 번호 지원 향상

이제 필드 분류를 통해 4자리 숫자를 마지막 4자리로 감지할 수 있습니다. 사용할 수 없습니다.

앱별 필드 분류 지원

Android 10 추가 FillResponse.setUserData()님, 세션 시간 동안 앱별 사용자 데이터를 설정할 수 있습니다. 이렇게 하면 자동 완성 서비스가 앱별 필드의 유형을 감지하는 데 도움이 됩니다. 있습니다.

UI 및 시스템 제어

Android 10에서는 사용자 인터페이스가 다음과 같이 향상되었습니다.

JVMTI PopFrame 한도 지원

Android 10은 can_pop_frames 드림 Android JVMTI 구현의 기능을 살펴보겠습니다 디버깅할 때 이 기능을 사용하면 중단점에서 일시중지하고 함수의 로컬, 글로벌 또는 구현을 조정한 후 함수를 다시 실행할 수 있습니다. 자세한 내용은 Oracle의 Pop Frame 참조 페이지

Surface Control API

Android 10은 시스템 컴포저터(SurfaceFlinger)에 대한 하위 수준 액세스를 위한 SurfaceControl API를 제공합니다. 대부분의 사용자는 SurfaceView를 사용하여 컴포저터를 올바르게 활용할 수 있습니다. 이 SurfaceControl API는 다음과 같은 특정 경우에 유용할 수 있습니다.

  • 여러 표면 동기화
  • 크로스 프로세스 표면 임베딩
  • 하위 수준 전체 기간 관리

SurfaceControl API는 다음에서 사용할 수 있습니다. SDK 및 NDK 바인딩입니다. NDK 구현에는 다음과 같이 버퍼를 수동으로 교환하기 위한 API가 포함됩니다. 있습니다. 이는 한계 BufferQueue

WebView 중단 렌더러 감지

Android 10에는 WebViewRenderProcessClient 드림 추상 클래스이며 앱은 이 클래스를 사용하여 WebView에서 응답하지 않습니다. 받는사람 다음 클래스를 사용합니다.

  1. 자체 서브클래스를 정의하고 서브클래스를 구현합니다. onRenderProcessResponsive() 드림 및 onRenderProcessUnresponsive() 메서드를 참조하세요.
  2. WebViewRenderProcessClient의 인스턴스를 하나 이상의 인스턴스에 연결 WebView 객체.
  3. WebView가 응답하지 않으면 시스템은 클라이언트의 onRenderProcessUnresponsive() 메서드에서 WebViewWebViewRenderProcess입니다. WebView가 단일 프로세스인 경우 WebViewRenderProcess는 매개변수가 null입니다.) 앱에서 적절한 조치를 취할 수 있습니다. 예를 들어 사용자에게 렌더링 프로세스를 중단할지 묻는 대화상자가 표시됩니다.

WebView가 계속 응답하지 않으면 시스템에서 주기적으로(5초마다 한 번 이하) onRenderProcessUnresponsive()를 호출하지만 다른 조치는 취하지 않습니다. WebView가 응답하는 경우 시스템은 onRenderProcessResponsive()를 한 번만 호출합니다.

설정 패널

Android 10에는 앱이 새로운 앱 또는 콘텐츠 표시 모드를 표시할 수 있도록 하는 설정 패널이 앱의 맥락에서 사용자에게 이러한 설정을 제공할 수 있습니다. 이렇게 하면 NFC 또는 모바일 데이터 등을 변경하려면 설정으로 이동하세요. 해야 합니다.

그림 1. 사용자가 기기가 있는 동안 웹페이지를 열려고 합니다. 네트워크에 연결되어 있지 않습니다. Chrome에서 인터넷 연결 팝업이 표시됨 설정 패널...

그림 2. 사용자가 Wi-Fi를 사용 설정하고 네트워크를 선택할 수 있습니다. 할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

예를 들어 사용자가 비행기 모드로 설정합니다. Android 10 이전에는 앱에서 설정을 열어 연결을 복원할지를 묻는 일반 메시지만 표시할 수 있었습니다. Android 10에서는 브라우저 앱은 주요 연결 설정을 보여주는 인라인 패널을 표시할 수 있습니다. Wi-Fi (근처 네트워크 포함), 모바일 데이터 등이 포함됩니다. 다음으로 바꿉니다. 이 패널에서 사용자는 앱을 나가지 않고도 연결을 복원할 수 있습니다.

설정 패널을 표시하려면 다음 중 하나를 사용하여 인텐트를 실행합니다. Settings.Panel 작업:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

자바

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type는 다음 중 하나일 수 있습니다.

ACTION_INTERNET_CONNECTIVITY
비행기 모드, Wi-Fi, 모바일 데이터가 포함됩니다
ACTION_WIFI
Wi-Fi 설정을 표시합니다. 다른 연결 설정은 표시하지 않습니다. 이것은 대용량 업로드를 수행하거나 Wi-Fi에 연결해야 하는 앱에 유용합니다. 다운로드
ACTION_NFC
근거리 무선통신(NFC)
과 관련된 모든 설정을 표시합니다.
ACTION_VOLUME
모든 오디오 스트림의 볼륨 설정을 표시합니다.

공유 향상

Android 10에서는 공유 기능이 다양하게 개선되었습니다.

Sharing Shortcuts API

공유 바로가기 API 직접 공유를 대체하는 API를 참고하세요.

공유 바로가기 API는 요청 시 사후 대응적으로 결과를 검색하는 대신 를 사용하면 앱이 직접 공유 타겟을 미리 게시할 수 있습니다. 이렇듯 ShortcutManager가 작동합니다. 두 API는 서로 유사하므로 이제 ShortcutInfo API를 사용하여 기능을 더 쉽게 만들 수 있습니다. 공유 바로가기 API를 사용하면 공유할 수도 있습니다. 공유 타겟이 시스템에 유지됨 또는 앱이 제거될 때까지만 유지됩니다.

이전의 직접 공유 메커니즘도 계속 작동하지만 이 메커니즘을 사용하는 앱은 공유 바로가기 API를 사용하는 앱보다 우선순위가 높습니다.

ShortcutInfo.Builder 드림 공유 타겟에 대한 추가 정보를 제공하는 메서드를 추가하고 개선합니다.

직접 공유 타겟

동적 바로가기를 직접 공유 타겟으로 게시할 수 있습니다. 직접 공유 타겟 게시를 참조하세요.

ShortcutManagerCompat 드림 는 이전 DirectShare API와의 호환성을 제공하는 새로운 AndroidX API입니다. 이 공유 타겟을 게시하는 데 선호됩니다.

텍스트 미리보기

앱이 텍스트 콘텐츠를 공유할 때 미리보기(선택사항)를 표시할 수 있습니다. Sharesheet UI의 콘텐츠를 저장할 수 있습니다.

서식 있는 텍스트 미리보기 추가를 참조하세요.

자세히 알아보기

앱이 데이터를 공유하는 방법에 관한 자세한 내용은 다른 앱으로 간단한 데이터 보내기다른 앱에서 간단한 데이터 받기

어두운 테마

Android 10은 Android 및 iOS 기기에 모두 적용되는 어두운 테마를 시스템 UI와 기기에서 실행되는 앱이 포함됩니다. 자세한 내용은 어두운 테마를 참고하세요.

포그라운드 서비스 유형

Android 10에는 여러 특정 서비스 정의에 포함되는 XML 매니페스트 속성인 foregroundServiceType이 새로 도입되었습니다. 드물긴 하지만 한 번에 여러 개의 포그라운드 서비스 유형을 특정 서비스에 적용하는 것입니다

다음 표에는 다양한 포그라운드 서비스 유형과 특정 유형을 선언하는 것이 적절한 서비스가 나와 있습니다.

포그라운드 서비스 유형 이 유형을 선언해야 하는 서비스 사용 사례
connectedDevice 웨어러블 피트니스 트래커 모니터링
dataSync 네트워크에서 파일 다운로드
location 계속 사용자 시작 작업
mediaPlayback 오디오북, 팟캐스트 또는 음악 재생
mediaProjection 짧은 기간의 기기 디스플레이 동영상 녹화
phoneCall 진행 중인 전화 통화 처리

Kotlin

Android 10에는 Kotlin 개발을 위한 다음과 같은 업데이트가 포함되었습니다.

libcore API에 대한 Null 허용 여부 주석

Android 10에서는 libcore API용 SDK에서 null 허용 여부 주석의 노출 범위가 개선되었습니다. 이러한 주석을 사용하면 애플리케이션 개발자가 Android 스튜디오에서 Kotlin 또는 Java null 허용 여부 분석을 통해 nullness 확인 정보를 수집할 수 있습니다.

일반적으로 Kotlin에서 null 허용 여부 계약을 위반하면 컴파일이 발생합니다. 오류가 발생했습니다. 기존 코드와의 호환성을 보장하려면 @RecentlyNullable@RecentlyNonNull 주석이 추가됩니다. 다시 말해 null 허용 여부를 위반하면 오류 대신 경고가 발생하는 것을 확인할 수 있습니다.

또한 이전에 만들었던 @RecentlyNullable 또는 @RecentlyNonNull 주석도 는 각각 @Nullable@NonNull로 변경됩니다. 즉, Android 10 이상에서는 null 허용 여부 위반이 발생합니다. 경고 대신 오류가 발생합니다

주석 변경에 대한 자세한 내용은 다음을 참고하세요. 이제 Android Pie SDK에서 Kotlin 지원이 강화되었습니다 참조하세요.

NDK

Android 10에는 다음과 같은 NDK 변경사항이 있습니다.

파일 설명어 소유권 디버깅 향상

Android 10에 파일 설명자 소유권을 찾고 수정하는 데 도움이 되는 fdsan 추가 문제를 더 쉽게 해결할 수 있습니다

파일 설명자 소유권의 잘못된 처리와 관련된 버그(주로 use-after-closedouble-close는 메모리 할당과 유사합니다. use-after-freedouble-free 버그를 사용하는 것이 일반적일 수 있지만 진단하고 해결할 수 있습니다 fdsan은 파일 설명자를 감지 또는 방지하려고 시도 파일 설명자 소유권을 시행하여 잘못된 관리를 방지할 수 있습니다.

이러한 문제와 관련된 비정상 종료에 관한 자세한 내용은 fdsan에 의해 감지되는 오류를 참고하세요. fdsan에 관한 자세한 내용은 fdsan의 Googlesource 페이지.

ELF TLS

NDK를 사용하여 최소 API 수준 29로 빌드된 애플리케이션에서는 ELF TLS를 사용할 수 있습니다. emutls 대신 사용합니다. 동적 및 정적 링커 지원이 지원에 추가되었습니다. 이 메서드를 사용하여 스레드 로컬 변수를 처리합니다.

API 수준 28 이하용으로 빌드된 앱의 경우 일부 emutls 문제를 해결하기 위해 libgcc/compiler-rt를 개선했습니다.

자세한 내용은 NDK 개발자를 위한 Android 변경사항을 참고하세요.

런타임

Android 10에는 다음과 같은 런타임 변경사항이 포함되어 있습니다.

Mallinfo 기반 가비지 컬렉션 실행

작은 플랫폼 Java 객체가 C++ 힙에 있는 거대한 객체를 참조하는 경우, C++ 객체는 종종 Java 객체가 수집될 때만 회수할 수 있으며 확정됨을 예로 들 수 있습니다 이전 출시에서는 플랫폼에서 Java 객체와 관련된 많은 C++ 객체입니다. 이 추정이 항상 정확하지는 계산이 정확하기 때문에 간혹 메모리 사용량이 크게 가비지 컬렉션을 하지 못했습니다.

Android 10에서는 가비지 컬렉터(GC)가 시스템 malloc()에 의해 할당되는 총 힙 크기를 추적하여 큰 malloc() 할당이 GC 트리거 계산에 항상 포함되도록 합니다. 앱 인터리브 처리 Java 실행을 통한 많은 수의 C++ 할당은 가비지 컬렉션 빈도를 줄여야 합니다 다른 앱에서는 약간 감소될 수 있습니다.

테스트 및 디버깅

Android 10에는 다음과 같은 테스트 및 디버깅 관련 개선 사항이 포함되어 있습니다.

온디바이스 시스템 추적 기능 개선

Android 10부터, Android 10에서 런타임의 크기 및 trace 지속 시간을 기기 내 시스템 트레이스 클러스터 수준에서 시스템이 장기 트레이스를 수행하고 주기적으로 트레이스를 복사합니다. 대상 파일에 버퍼를 생성합니다. 트레이스가 완료됩니다. 지정된 크기 또는 지속 시간 제한에 도달할 때

이러한 추가 매개변수를 사용하여 테스트할 때와 다른 사용 사례를 테스트합니다. 사용합니다 성능 버그를 진단하는 경우를 예로 들 수 있습니다. 앱을 오랫동안 실행한 후에만 발생하는 상황입니다. 포함 이 경우 하루 종일 긴 추적을 기록한 다음 보고서의 CPU 스케줄러, 디스크 활동, 앱 스레드 및 기타 데이터를 버그의 원인을 파악하는 데 도움이 됩니다.

Android 10 이상에서는 추적 파일이 Perfetto로 열 수 있습니다. 성능 계측 및 추적을 위한 오픈소스 프로젝트입니다. 다음과 같은 작업을 할 수 있습니다. Perfetto 트레이스 파일을 Systrace로 변환하기 형식을 참고하세요.

TextClassifier 개선 사항

Android 10은 TextClassifier 드림 인터페이스에 추가되었습니다.

언어 감지

detectLanguage() 드림 기존의 분류 방법과 유사하게 작동합니다. 그것은 를 받을 수 있습니다. TextLanguage.Request 드림 객체를 만들고 TextLanguage 객체를 지정합니다.

TextLanguage 객체는 순서가 지정된 쌍 목록으로 구성됩니다. 각 쌍 에는 언어와 분류에 해당하는 신뢰도 점수가 포함됩니다.

권장 대화 작업

suggestConversationActions() 드림 메서드는 기존의 분류 방법과 유사하게 작동합니다. 또한 ConversationActions.Request 드림 객체를 만들고 ConversationActions 객체를 지정합니다.

ConversationActions 객체는 ConversationAction 객체 목록으로 구성됩니다. 각 ConversationAction 객체에는 잠재적인 추천 작업과 그 작업의 신뢰도 점수가 포함되어 있습니다.

알림의 스마트 답장/작업

Android 9에서는 시스템 내에서 추천 답장을 표시하는 기능이 있습니다. Android 10은 이를 확장하여 다음과 같은 기능을 제공합니다. 추천 인텐트 기반 작업이 포함됩니다. 또한 플랫폼에서 이러한 추천을 자동으로 생성합니다. 앱은 여전히 자체 시스템 생성 추천을 선택 해제할 수 있습니다.

이러한 답장을 생성하는 데 사용되는 API는 TextClassifier님, Android 10의 개발자에게 직접 노출되었습니다. 자세한 내용은 TextClassifier 개선 사항에 관한 섹션을 참고하세요.

앱에서 자체 추천을 제공하는 경우 플랫폼에서 자동 추천을 생성하지 않습니다. 앱 알림을 표시하지 않으려는 경우 시스템 생성 답장을 선택 해제할 수 있습니다. 사용하여 setAllowGeneratedReplies() 드림 및 setAllowSystemGeneratedContextualActions()