동작 변경사항: 모든 앱

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

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

핵심 기능

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

패키지 중지 상태 변경사항

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 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. 앱에는 비공개 공간에 설치된 앱을 위한 별도의 런처 컨테이너가 있어야 합니다. getLauncherUserInfo() 메서드를 사용하여 처리 중인 사용자 프로필 유형을 확인합니다.
  2. 사용자는 비공개 스페이스 컨테이너를 숨기거나 표시할 수 있어야 합니다.
  3. 사용자는 비공개 스페이스 컨테이너를 잠그거나 잠금 해제할 수 있어야 합니다. requestQuietModeEnabled() 메서드를 사용하여 비공개 스페이스를 잠그거나 (true 전달) 잠금 해제합니다 (false 전달).
  4. 잠겨 있는 동안 비공개 스페이스 컨테이너의 앱은 검색과 같은 메커니즘을 통해 표시되거나 검색할 수 없어야 합니다. 앱은 ACTION_PROFILE_AVAILABLEACTION_PROFILE_UNAVAILABLE 브로드캐스트에 수신기를 등록하고 비공개 스페이스 컨테이너의 잠금 또는 잠금 해제 상태가 변경될 때 앱의 UI를 업데이트해야 합니다. 이 두 브로드캐스트에는 앱에서 비공개 프로필 사용자를 참조하는 데 사용할 수 있는 EXTRA_USER가 포함되어 있습니다.

    isQuietModeEnabled() 메서드를 사용하여 비공개 스페이스 프로필이 잠겨 있는지 확인할 수도 있습니다.

앱 스토어 앱

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

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

Android 15 基于 Android 14 中发生的变更构建,并进一步扩展了这种安全性。在 Android 15 中,targetSdkVersion 低于 24 的应用将无法安装。要求应用满足现代 API 级别有助于确保更好的安全性和隐私保护。

恶意软件通常会以较低的 API 级别为目标平台,以绕过在更高 Android 版本中引入的安全和隐私保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 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 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保您的 fragment 转换支持预测性返回导航。
  • 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
  • FragmentManager 不知道的返回堆栈中迁出。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

사용자가 앱을 강제 종료할 때 위젯이 사용 중지됨

사용자가 Android 15를 실행하는 기기에서 앱을 강제 종료하면 시스템은 모든 앱의 위젯을 일시적으로 사용 중지합니다. 위젯은 비활성화되어 사용자가 상호작용할 수 없습니다. 이는 Android 15부터 앱이 강제 종료되면 시스템이 앱의 대기 중인 인텐트를 모두 취소하기 때문입니다.

사용자가 다음에 앱을 실행하면 시스템에서 이러한 위젯을 다시 사용 설정합니다.

자세한 내용은 패키지 중지 상태 변경사항을 참고하세요.

지원 중단

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

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