호환성 프레임워크 변경사항 (Android 11)

이 페이지에서는 Android 11 (API 수준 30)의 호환성 프레임워크에 추가된, 앱에 영향을 미치는 동작 변경사항에 관해 각각 설명합니다. 이 목록을 개발자 옵션 및 ADB 명령어와 함께 사용하여 Android 11을 타겟팅할 준비를 할 때 앱을 테스트하고 디버그하세요.

ADD_CONTENT_OBSERVER_FLAGS

변경 ID: 150939131

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱의 경우 정수 flags 인수가 포함된 새로운 공개 API 오버로드 onChange(boolean, Uri, int)가 있습니다.

이 새로운 메서드는 정수 userId 인수가 포함된 비 SDK onChange() 오버로드 메서드를 사용하는 앱의 공개 SDK 대안입니다.

ADMIN_APP_PASSWORD_COMPLEXITY

변경 ID: 123562444

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 관리자 앱의 경우 앱이 현재 할당된 비밀번호 품질과 관련이 없는 비밀번호 요구사항을 설정할 때마다 오류가 발생합니다. 예를 들어 비밀번호 품질이 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED로 설정된 경우 앱은 최소 비밀번호 길이를 설정할 수 없습니다. 이 경우 최소 비밀번호 길이를 설정하기 전에 앱이 먼저 setPasswordQuality() 메서드를 호출한 후에만 setPasswordMinimumLength() 메서드를 호출해야 합니다.

또한 Android 11을 타겟팅하는 관리자 앱이 비밀번호 품질을 낮추면 더 이상 적용되지 않는 기존 비밀번호 요구사항이 기본값으로 재설정됩니다.

APP_DATA_DIRECTORY_ISOLATION

변경 ID: 143937733

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱은 다른 앱의 타겟 SDK 버전과 관계없이 모든 앱의 비공개 데이터 디렉터리에 있는 파일에 더 이상 액세스할 수 없습니다.

자세한 내용은 비공개 디렉터리 액세스를 참조하세요.

APN_READING_PERMISSION_CHANGE_ID

변경 ID: 124107808

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱의 경우 APN 데이터베이스에 액세스하려면 이제 Manifest.permission.WRITE_APN_SETTINGS 권한이 필요합니다.

이 변경사항에 관한 자세한 내용은 APN 데이터베이스의 제한된 읽기 액세스를 참조하세요.

BACKGROUND_RATIONALE_CHANGE_ID

변경 ID: 147316723

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

이제 앱은 백그라운드에서 기기의 위치 정보에 액세스하도록 요청할 때마다 유효한 근거를 제공해야 합니다.

이 변경사항에 관한 자세한 내용은 Android 11의 위치 정보와 관련된 개인정보 보호 변경사항을 설명하는 Android 11의 백그라운드 위치 정보에 액세스하는 방법 가이드를 참조하세요.

CALLBACK_ON_CLEAR_CHANGE

변경 ID: 119147584

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Editor.clear가 호출될 때마다 이제 null 키가 있는 OnSharedPreferenceChangeListener.onSharedPreferenceChanged로 콜백이 실행됩니다.

이 변경사항에 관해 자세히 알아보려면 OnSharedPreferenceChangeListener의 콜백 변경사항을 참조하세요.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

변경 ID: 130595455

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

이제 updateAvailableNetworks(List, Executor, Consumer)setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer)의 오류 코드가 확장됩니다.

CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE

변경 ID: 148180766

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

startWatchingMode(String, String, AppOpsManager.OnOpChangedListener)의 사소한 동작 변경사항입니다. 이 변경 이전에 시스템은 전환된 작업을 콜백했습니다. 변경 이후에는 시스템에서 실제로 요청된 작업 또는 전환된 모든 작업(작업이 지정되지 않았다면)을 콜백합니다.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID

변경 ID: 136219221

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱에서는 R.attr.foregroundServiceType이 매니페스트 파일에서 각각 ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERAServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE으로 구성되었을 때 포그라운드 서비스는 사용 중인 카메라 및 마이크 기능만 수신합니다. 이전 버전의 Android에서는 포그라운드 서비스가 카메라 및 마이크 기능을 자동으로 수신했습니다.

이 변경사항에 관한 자세한 내용은 Android 11의 포그라운드 서비스 유형을 참조하세요.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

변경 ID: 128611929

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

앱은 더 이상 맞춤 토스트 메시지를 백그라운드에 게시할 수 없지만 앱이 백그라운드에 있는 동안 Toast.makeText(Context, CharSequence, int) 메서드 및 변형을 사용하여 계속 토스트 메시지를 게시할 수 있습니다.

이 변경사항에 관한 자세한 내용은 맞춤 토스트 메시지 뷰가 차단됨을 참조하세요.

CHANGE_RESTRICT_SAW_INTENT

변경 ID: 135920175

기본 상태: 이 변경사항은 전환할 수 없습니다. 호환성 프레임워크에서만 기록됩니다.

android.settings.MANAGE_APP_OVERLAY_PERMISSION 작업 및 package 데이터 URI 체계를 사용하는 인텐트는 더 이상 관련 권한을 관리하기 위한 앱별 화면으로 사용자를 안내하지 않습니다. 대신, 권한을 요청한 모든 앱을 관리할 수 있는 화면으로 사용자를 안내합니다.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

변경 ID: 147798919

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

텍스트 토스트 메시지는 이제 인앱 대신 SystemUI에 의해 렌더링됩니다. 이렇게 하면 앱이 백그라운드에서 맞춤 토스트 메시지를 게시할 때 제한을 우회하는 것을 방지할 수 있습니다.

DEFAULT_SCOPED_STORAGE

변경 ID: 149924527

기본 상태: 모든 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 모든 앱은 이제 기본적으로 범위 지정 저장소를 사용하며 더 이상 범위 지정 저장소를 선택 해제할 수 없습니다.

그러나 이 변경사항을 사용 중지하면 앱의 타겟 SDK 버전 및 매니페스트 플래그 값과 관계없이 범위 지정 저장소 없이 앱을 테스트할 수 있습니다.

Android 11의 범위 지정 저장소 변경사항에 관한 자세한 내용은 Android 11의 Android 저장소 변경사항에 관한 페이지의 범위 지정 저장소 섹션을 참조하세요.

EMPTY_INTENT_ACTION_CATEGORY

변경 ID: 151163173

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱의 경우 이제 인텐트 필터의 action 또는 category가 빈 문자열이면 시스템에서 오류가 발생합니다. Android 11 이전 플랫폼에서는 이 경우 버그로 인해 오류가 발생하지 않았습니다. 속성이 null이거나 누락된 경우는 항상 오류가 발생하므로 여기에 포함되지 않습니다.

FILTER_APPLICATION_QUERY

변경 ID: 135549675

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

이제 앱은 기기에 있는 다른 앱에 관한 세부정보를 얻으려면 먼저 사용하려는 패키지 및 인텐트를 선언해야 합니다. 앱의 매니페스트에서 <queries> 태그를 사용하여 선언해야 합니다.

Android 11에서 설치된 다른 앱을 쿼리하고 앱과 상호작용하는 방법에 관한 자세한 내용은 패키지 공개 상태 개인정보 보호 페이지를 참조하세요.

FORCE_ENABLE_SCOPED_STORAGE

변경 ID: 값: 132649864

기본 상태: 모든 앱에 사용 중지됩니다.

Android 11을 타겟팅하는 모든 앱은 이제 기본적으로 범위 지정 저장소를 사용하며 더 이상 범위 지정 저장소를 선택 해제할 수 없습니다.

그러나 앱이 여전히 Android 10(API 수준 29) 이하를 타겟팅하면 이 변경사항을 설정함으로써 앱의 타겟 SDK 버전 및 매니페스트 플래그 값과 관계없이 범위 지정 저장소로 앱을 테스트할 수 있습니다.

Android 11의 범위 지정 저장소 변경사항에 관한 자세한 내용은 Android 11의 Android 저장소 변경사항에 관한 페이지의 범위 지정 저장소 섹션을 참조하세요.

GET_DATA_CONNECTION_STATE_R_VERSION

변경 ID: 148535736

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

PreciseDataConnectionState#getDataConnectionState의 SDK 버전을 확인합니다.

GET_DATA_STATE_R_VERSION

변경 ID: 148534348

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

getDataState()의 SDK 버전을 확인합니다.

GET_PROVIDER_SECURITY_EXCEPTIONS

변경 ID: 150935354

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11(API 수준 30) 이상을 타겟팅하는 앱의 경우 getProvider(String)에서 더 이상 보안 예외가 발생하지 않습니다.

GET_TARGET_SDK_VERSION_CODE_CHANGE

변경 ID: 145147528

기본 상태: Android 10(API 수준 29) 이상을 타겟팅하는 앱에 사용 설정됩니다.

SmsManager.sendResolverResult() 메서드의 SDK 버전을 확인합니다.

GWP_ASAN

변경 ID: 135634846

기본 상태: 모든 앱에 사용 중지됩니다.

앱에서 샘플 네이티브 메모리 버그 감지를 사용 설정합니다.

이 변경사항에 관한 자세한 내용은 GWP-ASan 가이드를 참조하세요.

HIDE_MAXTARGETSDK_P_HIDDEN_APIS

변경 ID: 149997251

기본 상태: Android 10(API 수준 29) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 10(API 수준 29) 이상을 타겟팅하는 앱의 경우 Android 10(API 수준 29)의 max-target-p(greylist-max-p) 목록에 속하는 모든 비 SDK 인터페이스에 대한 액세스 권한을 삭제합니다.

HIDE_MAXTARGETSDK_Q_HIDDEN_APIS

변경 ID: 149994052

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11(API 수준 30) 이상을 타겟팅하는 앱의 경우 Android 11(API 수준 30)의 max-target-q(greylist-max-q) 목록에 속하는 모든 비 SDK 인터페이스에 대한 액세스 권한을 삭제합니다.

이 변경사항에 관해 자세히 알아보려면 이제 Android 11에서 차단되는 비 SDK 인터페이스를 참조하세요.

LISTEN_CODE_CHANGE

변경 ID: 147600208

기본 상태: Android 10(API 수준 29) 이상을 타겟팅하는 앱에 사용 설정됩니다.

TelephonyManager.listen(PhoneStateListener, int)의 SDK 버전을 확인합니다.

MISSING_APP_TAG

변경 ID: 150776642

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱의 경우 이제 앱의 매니페스트 파일에 application 또는 instrumentation 태그가 누락되면 오류가 발생합니다.

NATIVE_HEAP_POINTER_TAGGING

변경 ID: 135754954

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱에서는 네이티브 힙 할당 시 이제 최상위 바이트에 0이 아닌 태그가 있습니다.

자세한 내용은 힙 포인터 태그하기를 참조하세요.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

변경 ID: 150880553

기본 상태: 모든 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱의 경우 이제 프로세스에서 TelephonyManager.listen(PhoneStateListener, int)를 통해 등록할 수 있는 PhoneStateListener 객체의 수에 제한이 있습니다. 기본 한도는 50개이며 원격 기기 구성 업데이트로 변경될 수 있습니다. 이 제한은 문제가 되는 프로세스에서 너무 많은 리스너를 등록하려고 할 때 TelephonyManager.listen(PhoneStateListener, int)에서 발생하는 IllegalStateException를 사용하여 적용됩니다.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

변경 ID: 142365358

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱은 제한된 비 SDK 인터페이스에 액세스하는 데 추가 리플렉션 레이어를 더 이상 사용할 수 없습니다.

PROCESS_CAPABILITY_CHANGE_ID

변경 ID: 136274596

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱에서는 이제 Context.BIND_INCLUDE_CAPABILITIES 플래그를 사용하여 클라이언트 프로세스에서 바인드된 서비스로 사용 중인 기능을 전달할 수 있습니다.

REMOVE_ANDROID_TEST_BASE

변경 ID: 133396946

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 앱에서는 앱이 android.test.runner에 종속되지 않으면 android.test.base 라이브러리가 삭제됩니다(android.test.base 라이브러리의 클래스에 종속되므로).

REQUEST_ACCESSIBILITY_BUTTON_CHANGE

변경 ID: 136293963

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 접근성 서비스의 경우 이제 접근성 서비스 메타데이터 파일에서 FLAG_REQUEST_ACCESSIBILITY_BUTTON 플래그를 지정해야 합니다. 지정하지 않으면 플래그가 무시됩니다.

이 변경사항에 관한 자세한 내용은 메타데이터 파일에서 접근성 버튼 사용 선언을 참조하세요.

RESOURCES_ARSC_COMPRESSED

변경 ID: 132742131

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11(API 수준 30)을 타겟팅하는 앱은 압축된 resources.arsc 파일을 포함하거나 이 파일이 4바이트 경계에 정렬되지 않으면 설치할 수 없습니다.

이 변경사항에 관한 자세한 내용은 압축된 리소스 파일을 참조하세요.

RESTRICT_STORAGE_ACCESS_FRAMEWORK

변경 ID: 141600225

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

앱이 Android 11을 타겟팅하고 저장소 액세스 프레임워크(SAF)를 사용하는 경우 더 이상 ACTION_OPEN_DOCUMENTACTION_OPEN_DOCUMENT_TREE 인텐트 작업을 사용하여 특정 디렉터리에 액세스할 수 없습니다. 이러한 변경사항에 관한 자세한 내용은 Android 11의 저장소와 관련된 개인정보 보호 업데이트를 설명하는 페이지에서 문서 액세스 제한 섹션을 참조하세요.

SELINUX_LATEST_CHANGES

변경 ID: 143539591

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

이 변경사항은 앱이 untrusted_app_R-targetSDk SELinux 도메인에 액세스하는 것을 제한합니다. 호환성 프레임워크에서 앱의 targetSDKVersion을 변경하지 않으면서 앱이 targetSdkVersion으로 관리되는 다른 변경사항을 전환할 수 있는 기본적인 변경사항 중 하나입니다. 이런 이유로 Android 11을 타겟팅하는 앱에 이 변경사항을 사용 중지해서는 안 됩니다. 사용 중지하면 앱이 작동하지 않습니다.

이 변경사항은 공유 사용자 ID를 사용하는 앱에는 영향을 주지 않습니다.

THROW_SECURITY_EXCEPTIONS

변경 ID: 147340954

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11 이전에는 권한 오류와 관련하여 SecurityExceptionsetEnabled API에 의해서만 발생했습니다. 이제 Android 11에서는 그렇지 않습니다. SecurityException이 여러 가지 이유로 발생할 수 있으며 그중 어느 것도 호출자에게 노출되지 않습니다.

기존 API 동작을 유지하기 위해 Android 11을 타겟팅하지 않는 앱에 레거시 권한 실패 또는 actor 적용 실패가 발생하면 Android 11 이전의 소스에 있는 IllegalStateException에 예외가 강제 적용됩니다.

USE_SET_LOCATION_ENABLED

변경 ID: 117835097

기본 상태: Android 11(API 수준 30) 이상을 타겟팅하는 앱에 사용 설정됩니다.

Android 11을 타겟팅하는 관리자 앱은 지원 중단된 Settings.Secure.LOCATION_MODE 설정을 변경하는 데 DevicePolicyManager.setSecureSetting(ComponentName, String, String)을 더 이상 사용할 수 없습니다. 대신 DevicePolicyManager.setLocationEnabled(ComponentName, boolean)를 사용해야 합니다.