Android 15 변경사항 요약 및 대응

Jiyoon Chae·2025년 7월 8일
0

안드로이드

목록 보기
23/23

Android 15(API 35)에서는 보안, 사용자 경험, 시스템 리소스 관리 등을 강화하기 위한 여러 변경사항이 적용되었습니다. 이 문서는 Android 15 대응을 위한 핵심 변경사항과 개발 시 유의할 점을 정리한 가이드입니다.

1. 패키지 중지 상태(FLAG_STOPPED) 강화

⚒️ 변경 전: 강제 종료된 앱도 시스템 또는 백그라운드 작업에 의해 다시 실행될 수 있었음

✅ 변경 후: Android 15부터는 사용자가 명시적으로 실행하지 않으면 앱이 자동으로 다시 실행되지 않음

영향:

  • 백그라운드 서비스나 알림으로 앱이 자동 실행되는 동작이 제한됨
  • 앱 강제 종료 후 위젯도 비활성화됨 (회색 처리 및 비작동)

2. 16KB 메모리 페이지 크기 지원

기존: 메모리 페이지는 4KB 고정
Android 15: 16KB 페이지 크기를 지원하는 디바이스 도입

조치:

  • NDK 또는 native library를 사용하는 앱은 16KB 환경에 맞춰 다시 빌드 필요
  • 앱이 Java/Kotlin만 사용하는 경우는 영향 없음

확인 방법:

  • APK Analyzer를 사용해 native 라이브러리 존재 여부 및 ELF segment alignment 확인

3. Private Space 기능 대응

Private Space: 민감한 앱(금융/건강 등)을 별도 공간에 추가 인증과 함께 보관할 수 있는 기능

Launcher 앱의 조건:

  • ROLE_HOME 권한으로 디바이스의 기본 런처로 설정
  • ACCESS_HIDDEN_PROFILES 권한을 AndroidManifest에 선언

앱 마켓(App Store)의 조건:

  • CATEGORY_APP_MARKET을 선언한 필요

4. PNG 기반 이모지 폰트 제거

✅ NotoColorEmojiLegacy.ttf가 Android 15에서 완전히 제거됨

  • 앱이 해당 폰트를 사용하는 경우 대체 수단 필요 (벡터 기반 이모지 사용)
  • 코드 내 직접 참조 여부 확인 필수

5. targetSdkVersion 최소값 변경

⚒️ 변경 전: API 23 이하도 설치 가능
✅ 변경 후: API 24 미만의 앱은 Android 15에서 설치 불가

목적: 낮은 API를 사용하는 악성 앱의 보안 우회 방지

6. 보안 및 개인정보 보호 정책 강화

Notification 관련

  • OTP가 포함된 알림은 신뢰되지 않은 앱에서 읽을 수 없음
  • 화면 공유 중 알림 숨김
  • OTP 도착 시 앱의 민감한 UI를 블러 또는 숨김 처리

신뢰된 앱 예외:

  • Companion Device Manager API로 등록된 앱은 OTP 제한을 받지 않음

7. 오디오 시스템 변경 사항

변경점:
Direct/Offload 오디오 트랙이 자원 부족 시 기존 트랙을 무효화하고 새 요청을 우선 처리

예:

  • Android 14까지: 요청 실패
  • Android 15부터: 기존 트랙 종료 후 새 요청 처리

8. 사용자 경험(UI/UX) 개선

  • 시스템 다이얼로그, 설정 UI, 터치 반응, 애니메이션 개선

  • Predictive Back 제스처 기능 기본 활성화 (개발자 옵션 제거됨)

  • FragmentManager 또는 NavigationComponent를 통한 백 스택 관리 권장

9. Widgets 상태 변화

  • 앱이 강제 종료되면 해당 앱의 위젯도 비활성화됨 (Android 15부터)

  • 앱 재실행 시 위젯이 다시 활성화됨

10. Media Projection 상태 표시

  • Android 15 QPR1 이상에서는 화면 공유, 녹화, 미러링 중일 때 상태바에 알림 칩 표시

  • 칩 클릭 시 사용자 제어 가능 / 화면 잠금 시 자동 중단

11. 백그라운드 네트워크 접근 제한

  • 앱이 유효한 생명주기 밖에서 네트워크 요청 시 IOException, UnknownHostException 발생 가능

대응 방안:

  • lifecycleScope / viewModelScope 등을 사용하여 네트워크 요청을 lifecycle-aware하게 실행

  • 백그라운드에서도 필요한 작업은 WorkManager 또는 ForegroundService 사용

참고 자료

https://developer.android.com/about/versions/15/behavior-changes-all?_gl=1*1rx7ut7*_up*MQ..*_ga*OTM1MTY1Mzg3LjE3NTE5MzUzMjE.*_ga_6HH9YJMN9M*czE3NTE5MzUzMjEkbzEkZzAkdDE3NTE5MzUzMjEkajYwJGwwJGgxNjg2MDgzNTE1

profile
바닐라라떼 좋아☕

0개의 댓글