동작 변경사항: 모든 앱

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

또한 앱에만 영향을 미치는 동작 변경사항의 목록을 검토해야 합니다. 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부터 AOSP는 16KB (16KB)의 페이지 크기를 사용하도록 구성된 기기 기기에서 지원됩니다. 앱이 NDK 라이브러리를 직접 사용하거나 간접적으로 또는 SDK를 통해 간접적으로 구매할 수 있는 경우 앱을 다시 빌드해야 이 16KB 기기에서 작동합니다.

기기 제조업체가 계속해서 더 많은 양의 기기를 사용하여 물리적 메모리(RAM), 이러한 장치의 대부분은 16KB 페이지 크기를 늘려 기기의 성능을 최적화해야 합니다. 추가 중 16KB 페이지 크기 기기 지원을 통해 앱이 앱이 관련 성능의 이점을 누리는 데 도움이 됩니다 개선할 수 있습니다 다시 컴파일하지 않으면 16KB 기기에서 앱이 작동하지 않을 수 있습니다. 프로덕션화될 때 확인해야 합니다

앱 지원을 추가하는 데 도움이 되도록 다음을 확인하는 방법 앱이 영향을 받는 경우 앱 다시 빌드 (해당하는 경우) 및 앱 테스트 방법 에뮬레이터를 사용한 16KB 환경 (Android 15 포함) 시스템 이미지 참조).

이점 및 실적 향상

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() 메서드를 사용하여 비공개 스페이스 프로필의 잠금 여부를 확인하세요.

앱 스토어 앱

비공개 스페이스에는 '앱 설치' 이 버튼을 클릭하면 인텐트를 사용하여 사용자의 비공개 공간에 앱을 설치할 수 있습니다. 앱에서 이 암시적 인텐트를 수신하고 <intent-filter>를 선언합니다. 앱의 매니페스트 파일에서 <category> CATEGORY_APP_MARKET:

PNG 기반 그림 이모티콘 글꼴 삭제됨

基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf) 已 只留下基于矢量的文件从 Android 13 (API) 开始 级别 33),系统表情符号渲染程序使用的表情符号字体文件已从 PNG 文件转换为矢量文件。系统保留了 Android 13 和 14 中的旧版字体文件。 具有自己的字体渲染程序的应用可以继续使用旧版字体文件 直到能够升级为止

要查看您的应用是否会受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件。

您可以选择以多种方式调整您的应用:

  • 使用平台 API 进行文本渲染。您可以将文本渲染为基于位图的 Canvas,并在必要时使用它获取原始图像。
  • 向您的应用添加 COLRv1 字体支持。FreeType 开源库 在版本 2.13.0 中支持 COLRv1,并且 。
  • 万不得已时,可以将旧版表情符号字体文件打包 (NotoColorEmoji.ttf) 复制到您的 APK 中, 但在这种情况下,您的应用将缺少最新的表情符号更新。对于 请参阅 Noto 表情符号 GitHub 项目 页面

최소 타겟 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이 더 낮은 모든 앱 설치된 상태로 유지됩니다.

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

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

카메라 및 미디어

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

이제 직접 및 오프로드 오디오 재생으로 리소스 한도에 도달하면 이전에 열린 직접 또는 오프로드 오디오 트랙이 무효화됩니다.

在 Android 15 之前,如果某个应用在另一个应用正在播放音频时请求直接播放或分流音频播放,并且已达到资源限制,此应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接或分流播放并且达到资源限制时,系统会使当前打开的所有 AudioTrack 对象失效,从而阻止执行新的轨道请求。

(直接和分流音轨通常会打开,以播放压缩的音频格式。播放直接音频的常见用例包括通过 HDMI 将编码音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

사용자 환경 및 시스템 UI

Android 15에는 더 일관성 있는 직관적인 사용자 환경을 제공합니다.

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

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

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

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

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

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

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

지원 중단

버전이 출시될 때마다 특정 Android API가 쓸모없게 되거나 더 나은 개발자 환경을 제공하거나 새로운 플랫폼을 지원하도록 리팩터링됨 기능을 제공합니다 이러한 경우 Google은 더 이상 사용되지 않는 API를 공식적으로 지원 중단하고 개발자가 사용할 다른 API를 사용하도록 안내합니다.

지원 중단이란 API에 대한 공식적인 지원이 종료되었지만 개발자는 계속 사용할 수 있습니다 주목할 만한 항목에 관해 자세히 알아보기 지원 중단에 관한 자세한 내용은 지원 중단 페이지를 참고하세요.