동작 변경사항: 모든 앱

Android 15 플랫폼에는 앱에 영향을 줄 수 있는 동작 변경사항이 포함되어 있습니다. 다음 동작 변경사항은 targetSdkVersion와 관계없이 Android 15에서 실행되는 모든 앱에 적용됩니다. 이러한 변경사항을 적절히 지원해야 하는 경우 앱을 테스트한 후 필요에 따라 수정해야 합니다.

또한 Android 15를 타겟팅하는 앱에만 영향을 주는 동작 변경사항 목록을 검토해야 합니다.

핵심 기능

Android 15는 Android 시스템의 다양한 핵심 기능을 수정하거나 확장합니다.

패키지 중지 상태 변경사항

패키지 FLAG_STOPPED 상태 (사용자가 앱 아이콘을 길게 누르고 '강제 종료'를 선택하여 AOSP 빌드에 참여할 수 있음)의 의도는 사용자가 직접 앱을 실행하거나 앱과 간접적으로 상호작용 (공유 시트 또는 위젯을 통해, 라이브 배경화면으로 앱 선택 등)하여 이 상태에서 앱을 명시적으로 삭제할 때까지 앱을 이 상태로 유지하는 것이었습니다. Android 15에서는 의도한 동작에 맞게 시스템 동작을 업데이트하고 있습니다. 직접 또는 간접적인 사용자 작업을 통해서만 앱을 중지 상태에서 삭제해야 합니다.

의도된 동작을 지원하기 위해 시스템은 Android 15에서 앱이 중지 상태가 될 때 기존 제한사항 외에도 모든 대기 중인 인텐트도 취소합니다. 사용자의 작업으로 인해 중지된 상태에서 앱이 삭제되면 ACTION_BOOT_COMPLETED 브로드캐스트가 앱에 전달되어 대기 중인 인텐트를 다시 등록할 수 있습니다.

ApplicationStartInfo.wasForceStopped() 메서드를 호출하여 앱이 중지됨 상태로 전환되었는지 확인할 수 있습니다.

16KB 페이지 크기 지원

지금까지 Android는 4KB 메모리 페이지 크기만 지원했기 때문에 일반적으로 Android 기기에 있는 평균 총 메모리 양에 맞게 시스템 메모리 성능이 최적화되었습니다. Android 15부터 Android는 16KB (16KB 기기)의 페이지 크기를 사용하도록 구성된 기기를 지원합니다.

기기 제조업체가 계속해서 더 많은 양의 물리적 메모리 (RAM)를 장착한 기기를 제작함에 따라 이러한 기기 대다수는 기기 성능을 최적화하기 위해 16KB (및 향후 더 큰) 페이지 크기로 구성될 가능성이 높습니다. 16KB 기기 지원을 추가하면 이러한 기기에서 앱을 실행할 수 있으며 관련 성능 개선의 이점을 누릴 수 있습니다. 이를 돕기 위해 앱이 영향을 받는지 확인하는 방법, 앱을 다시 빌드하는 방법(해당하는 경우), 에뮬레이터와 실제 기기를 모두 사용하여 16KB 환경에서 앱을 테스트하는 방법에 관한 안내를 제공했습니다.

이점 및 실적 향상

16KB 페이지 크기로 구성된 기기는 평균적으로 메모리를 약간 더 많이 사용하지만 시스템과 앱 모두에서 다양한 성능 개선사항이 있습니다.

  • 시스템의 메모리 압박이 있는 동안 앱 실행 시간이 단축됨: 테스트한 일부 앱의 경우 평균 3.16% 감소, 상당한 개선 (최대 30%)
  • 앱 실행 중 전력 사용 감소: 평균 4.56% 감소
  • 더 빠른 카메라 실행: 핫 스타트가 평균 4.48% 더 빠르고 콜드 스타트가 평균 6.60% 더 빠릅니다.
  • 시스템 부팅 시간 개선: 평균 1.5% (약 0.8초) 개선

이러한 개선사항은 초기 테스트를 기반으로 하며 실제 기기에서는 결과가 다를 수 있습니다. 테스트를 계속하면서 앱의 잠재적 이익에 관한 추가 분석을 제공합니다.

앱이 영향을 받는지 확인하기

<

앱에서 네이티브 코드를 사용하는 경우 16KB 기기를 지원하도록 앱을 다시 빌드해야 합니다. 앱에서 네이티브 코드를 사용하는지 확실하지 않으면 APK Analyzer를 사용하여 네이티브 코드가 있는지 확인할 수 있습니다.

앱에서 모든 라이브러리나 SDK를 포함하여 자바 프로그래밍 언어나 Kotlin으로 작성된 코드만 사용한다면 이미 16KB 기기를 지원하는 것입니다. 그럼에도 불구하고 16KB 환경에서 앱을 테스트하여 앱 동작에 예기치 않은 회귀가 없는지 확인하는 것이 좋습니다.

비공개 스페이스를 지원하기 위한 일부 앱의 필수 변경사항

비공개 공간은 Android 15의 새로운 기능으로, 사용자는 추가 인증 계층에 따라 민감한 앱을 보지 못하도록 민감한 앱을 차단할 수 있는 별도의 공간을 기기에 만들 수 있습니다. 비공개 스페이스의 앱은 공개 상태가 제한적이므로 일부 유형의 앱은 사용자의 비공개 스페이스에 있는 앱을 보고 상호작용할 수 있도록 추가 단계를 실행해야 합니다.

모든 앱

비공개 스페이스의 앱은 직장 프로필과 마찬가지로 별도의 사용자 프로필에 보관되므로 앱은 기본 프로필에 없는 앱의 설치된 사본이 직장 프로필에 있다고 가정해서는 안 됩니다. 앱에 이러한 가정을 하는 직장 프로필 앱과 관련된 로직이 있는 경우 이 로직을 조정해야 합니다.

런처 앱

런처 앱을 개발하는 경우 비공개 스페이스의 앱이 표시되려면 먼저 다음을 실행해야 합니다.

  1. 앱이 기기의 기본 런처 앱, 즉 ROLE_HOME 역할을 보유해야 합니다.
  2. 앱은 앱의 매니페스트 파일에서 ACCESS_HIDDEN_PROFILES 일반 권한을 선언해야 합니다.

ACCESS_HIDDEN_PROFILES 권한을 선언하는 런처 앱은 다음과 같은 비공개 스페이스 사용 사례를 처리해야 합니다.

  1. 앱에는 비공개 공간에 설치된 앱을 위한 별도의 런처 컨테이너가 있어야 합니다.
  2. 사용자는 비공개 스페이스 컨테이너를 숨기거나 표시할 수 있어야 합니다.
  3. 사용자는 비공개 스페이스 컨테이너를 잠그고 잠금 해제할 수 있어야 합니다.
  4. 잠긴 상태에서는 비공개 스페이스 컨테이너의 앱이 검색과 같은 메커니즘을 통해 표시되거나 검색되지 않아야 합니다.
  5. 비공개 스페이스 컨테이너가 잠금 해제된 동안 사용자가 기기를 잠그면 비공개 스페이스 컨테이너도 잠가야 합니다.

앱 스토어 앱

비공개 공간에는 사용자의 비공개 공간에 앱을 설치하는 암시적 인텐트를 실행하는 '앱 설치' 버튼이 포함됩니다. 앱이 이 암시적 인텐트를 수신하도록 하려면 <category>CATEGORY_APP_MARKET로 설정하여 앱의 매니페스트 파일에서 <intent-filter>를 선언합니다.

최소 타겟 SDK 버전을 23에서 24로 상향 조정함

Android 15는 Android 14에서 적용된 변경사항을 기반으로 하며 이 보안을 더욱 확장합니다. Android 15에서는 targetSdkVersion이 24 미만인 앱을 설치할 수 없습니다. 앱이 최신 API 수준을 충족하도록 요구하면 더 나은 보안 및 개인 정보 보호를 보장하는 데 도움이 됩니다.

멀웨어는 상위 Android 버전에 도입된 보안 및 개인 정보 보호 기능을 우회하기 위해 더 낮은 API 수준을 타겟팅하는 경우가 많습니다. 예를 들어 일부 멀웨어 앱은 targetSdkVersion 22를 사용하여 2015년 Android 6.0 Marshmallow(API 수준 23)에서 도입된 런타임 권한 모델이 적용되지 않도록 합니다. 이 Android 15 변경사항으로 인해 멀웨어는 보안 및 개인 정보 보호 개선을 피하기가 더 어려워집니다. 더 낮은 API 수준을 타겟팅하는 앱을 설치하려고 하면 설치에 실패하고 Logcat에 다음과 같은 메시지가 표시됩니다.

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Android 15로 업그레이드하는 기기에서는 targetSdkVersion가 24 미만인 앱이 설치된 상태로 유지됩니다.

이전 API 수준을 타겟팅하는 앱을 테스트해야 한다면 다음 ADB 명령어를 사용합니다.

adb install --bypass-low-target-sdk-block FILENAME.apk

카메라 및 미디어

Android 15에서는 모든 앱의 카메라 및 미디어 동작을 다음과 같이 변경합니다.

이제 다이렉트 및 오프로드 오디오 재생이 리소스 한도에 도달하면 이전에 열린 직접 재생을 무효화하거나 오디오 트랙을 오프로드합니다.

Android 15 이전에는 다른 앱이 오디오를 재생하는 동안 앱이 직접 또는 오프로드 오디오 재생을 요청하고 리소스 제한에 도달한 경우 앱이 새 AudioTrack를 열 수 없었습니다.

Android 15부터 앱이 직접 또는 오프로드 재생을 요청하고 리소스 한도에 도달하면 시스템은 현재 열려 있는 모든 AudioTrack 객체를 무효화하여 새 트랙 요청을 처리하지 못하게 합니다.

다이렉트 및 오프로드 오디오 트랙은 일반적으로 압축된 오디오 형식의 재생을 위해 열립니다. 직접 오디오를 재생하는 일반적인 사용 사례로는 HDMI를 통해 인코딩된 오디오를 TV로 스트리밍하는 것이 있습니다. 오프로드 트랙은 일반적으로 하드웨어 DSP 가속이 적용된 휴대기기에서 압축된 오디오를 재생하는 데 사용됩니다.)

사용자 환경 및 시스템 UI

Android 15에는 더 일관되고 직관적인 사용자 환경을 만들기 위한 몇 가지 변경사항이 포함되어 있습니다.

선택한 앱에 뒤로 탐색 예측 애니메이션이 사용 설정되었습니다.

Android 15부터 뒤로 탐색 예측 애니메이션을 위한 개발자 옵션이 삭제되었습니다. 이제 홈으로 돌아가기, 교차 작업, 교차 활동과 같은 시스템 애니메이션이 완전히 또는 활동 수준에서 뒤로 탐색 예측 동작을 선택한 앱에 표시됩니다. 앱이 영향을 받는 경우 다음 조치를 취합니다.

  • 앱이 뒤로 탐색 예측 동작을 사용하도록 올바르게 이전되었는지 확인하세요.
  • 프래그먼트 전환이 뒤로 탐색 예측에서 작동하는지 확인합니다.
  • 애니메이션 및 프레임워크 전환에서 이전하고 대신 애니메이터 및 androidx 전환을 사용하세요.
  • FragmentManager가 알지 못하는 백 스택에서 이전합니다. 대신 FragmentManager 또는 탐색 구성요소에서 관리하는 백 스택을 사용하세요.

지원 중단

각 출시에서 특정 Android API는 더 이상 사용되지 않거나 더 나은 개발자 환경을 제공하거나 새로운 플랫폼 기능을 지원하기 위해 리팩터링해야 할 수 있습니다. 이 경우 Google은 더 이상 사용되지 않는 API를 공식적으로 지원 중단하고 개발자에게 대신 사용할 대체 API를 안내합니다.

지원 중단이란 API에 대한 공식 지원은 종료했지만 개발자는 계속 사용할 수 있음을 의미합니다. 이 Android 버전의 주요 지원 중단에 관해 자세히 알아보려면 지원 중단 페이지를 참고하세요.