[Android] Android 15 / API level 35 변경사항 한 눈에 살펴보기

불순분자들·2025년 7월 2일

Android

목록 보기
6/6

모든 앱 변경사항


앱 STOPPED 상태 변경

  • 강제 중지 상태 앱은 사용자가 직접 실행하거나 위젯/쉐어시트 등으로 간접 실행할 때까지 계속 중지됨

  • 이를 위해 종료 시점에 모든 PendingIntent도 취소됨. 위젯이 비활성화되고, 다시 실행해야 복구됨

  • ApplicationStartInfo.wasForceStopped()로 강제 중지에서 복귀 여부 확인 가능

16 KB 메모리 페이지 지원

  • Android 15부터 16 KB 페이지 크기를 지원하는 디바이스 등장

  • 네이티브 코드(NDK)를 사용하는 앱은 반드시 재빌드 필요하며, EMULATOR 테스트를 권장

Private space 지원 앱 조정

  • Private space는 별도 사용자 프로필로 격리됨

  • Medical 앱/런처/앱마켓은 Private space에서 정상 동작하도록 추가 설정 필요

PNG 기반 Emoji 폰트 제거

  • NotoColorEmojiLegacy.ttf 파일이 제거되어, COLRv1 벡터 폰트로 전환됨. 호환성 위해 자체 폰트 포함 시 다시 추가할 수 있음

최소 target SDK 24 의무화

  • Android 15부터 targetSdkVersion < 24인 앱은 설치 불가. 기존 설치된 앱은 유지됨. 테스트용 우회 커맨드 제공

보안: OTP 내용 노출 차단

  • NotificationListenerService를 사용하는 비신뢰 앱은 OTP 포함 알림의 원본 내용을 읽지 못함

보안: Screenshare 보호 강화

  • 화면 공유 중에는 민감한 알림·활동이 자동으로 리다액션됨.

  • 개발자는 알림에 setPublicVersion()을 사용하거나 setContentSensitivity()로 표시할 수 있음

미디어: Direct/offload 오디오 트랙 제한 강화

  • 리소스 한계 도달 시 신규 요청이 들어오면 기존 AudioTrack을 강제 해제한 후 재요청 처리

UIUX: 예측 백 애니메이션 활성화

  • Android 15부터 예측 백 제스처를 옵트인한 앱에서만 예측 백 애니메이션 작동

  • 이에 맞춰 프래그먼트 전환과 Navigation 구성을 업데이트해야 함

UIUX: 위젯 비활성화 동작 강화

  • 앱을 강제 중지하면 앱 위젯도 비활성화됨. 다시 앱 실행 시 복원됨

UIUX: 화면투영(스크린 공유) 상태바 칩 표시 (QPR1 이상)

  • 화면 공유·캐스트·녹화 중 상단 상태바에 칩 표시되고, 탭 시 즉시 중단 가능

  • 화면 잠금 시에도 자동으로 화면 공유 중단됨

UIUX: 백그라운드 네트워크 제한

유효한 프로세스 수명 주기 외 네트워크 요청은 예외(IOException) 발생

네트워크는 lifecycle-aware나 WorkManager/포그라운드 서비스 이용 권장


Android 15 변경사항


Foreground 서비스: dataSync 및 mediaProcessing 유형에 6시간 제한

  • 제한 시간: dataSync 혹은 mediaProcessing 타입의 포그라운드 서비스는 24시간 중 최대 6시간 실행 가능.

  • 타임아웃 발생 시: 시스템이 Service.onTimeout(int, int) 콜백 호출 → 앱은 수초 내에 stopSelf() 해야 하며, 지연 시 예외 발생(RemoteServiceException)

  • 공유 제한: 같은 앱 내 다수 서비스 사용 시 총합 6시간이 카운트. 단, 앱이 포그라운드로 전환되면 타이머 리셋

  • 테스트: adb shell am compat enable FGS_INTRODUCE_TIME_LIMITS your-package-name 로 타이머 적용 가능

BOOT_COMPLETED 브로드캐스트 서비스 실행 제한

  • Android 15 이상 타겟 앱은 BOOT_COMPLETED 수신만으로 포그라운드 서비스(startForegroundService)를 실행할 수 없음

SYSTEM_ALERT_WINDOW 권한 보유 중 서비스 실행 제한

  • SYSTEM_ALERT_WINDOW 권한이 있는 앱은 해당 권한 보유 중 자동으로 포그라운드 서비스를 시작하는 것이 제한됨

DND(방해 금지 모드) 설정 방식 변화

  • setInterruptionFilter() 및 setNotificationPolicy 호출 시, 더 이상 글로벌 상태 직접 변경이 불가능하며, AutomaticZenRule 생성/수정 방식으로 대체

OpenJDK API 변경


String.format/Formatter 포맷 검증 강화

  • 인덱스, 플래그, 폭, 정밀도 등을 더 엄격하게 검증합니다. 예: %0 사용 시 IllegalFormatArgumentIndexException 발생

  • 자바 List에 동일 이름의 API가 추가되면서, Kotlin 확장 함수 호출 시 버전 호환 문제가 생길 수 있음. 권장 해결법: removeAt(0) / removeAt(lastIndex) 사용


Android 15 보안


TLS 1.0/1.1 완전 폐기

  • Android 15를 타겟으로 하면 TLS 1.0 및 1.1은 전면 비허용

백그라운드에서의 Activity launch 추가 제한

  • Android 10부터 강화된 제한이 계속 유지됩니다. 포그라운드 전환 등 명시적인 유저 액션 없이 다른 앱 화면을 띄울 수 없음

Intent 보안 강화

  • 신규 StrictMode 정책으로 detectUnsafeIntentLaunch() 옵션 도입. Unsafe Intent launch 감지 가능하며, 실행 오류 방지를 위한 대응이 필요

Android 15 UI / UX


Edge‑to‑Edge 기본 적용

  • Android 15 타겟 앱은 기본적으로 edge-to-edge 레이아웃이 강제되며, 윈도우 인셋 처리 누락 시 UI 요소가 잘릴 수 있음. Material 3 컴포넌트 사용 또는 WindowInsets API 적용이 권장

Configuration 값에 시스템 바 높이 포함

  • screenWidthDp, screenHeightDp, smallestScreenWidthDp, orientation 등 Configuration 기반 레이아웃 산출 시 시스템 바를 포함한 값 사용되어, 관련 계산 방식 수정 필요

elegantTextHeight 기본값 true

  • 스크립트(Thai, Arabic 등)에서 TextView의 기본 줄 높이가 더 여유 있게 조정됩니다. 필요한 경우 XML에서 따로 false로 지정해서 이전 스타일 유지 가능

Complex letter glyph 처리 개선

  • 캘리그래피나 복잡 조합 언어 시, 글자 일부가 잘리는 현상 방지돼 TextView가 자동으로 너비 분배를 늘립니다

    • 제어 API: setUseBoundsForWidth(true) setShiftDrawingOffsetForStartOverhang(true) 사용

EditText 로케일별 최소 줄 높이 적용

  • 텍스트의 로케일(일본어, 버마어 등)에 따라 EditText 높이가 자동 조정됨. 기본 동작을 복원하려면 useLocalePreferredLineHeightForMinimum=false 설정 가능, 또는 setMinimumFontMetrics() API 사용

Audio: 오디오 포커스 요청 제한

앱이 포그라운드에 있어야 하거나, 포그라운드 서비스 중이어야 오디오 포커스를 요청할 수 있습니다. 그렇지 않으면 AUDIOFOCUS_REQUEST_FAILED 반환

서비스 타입설명24시간 타임아웃 적용 여부
dataSync데이터 동기화, 백업 등✅ 최대 6시간 (onTimeout 필요)
mediaProcessing영상/음성 변환, 인코딩 등✅ 최대 6시간 (onTimeout 필요)
camera백그라운드 카메라 사용❌ 없음
mediaPlayback음악/비디오 재생❌ 없음
mediaProjection화면 녹화/공유❌ 없음
microphone백그라운드 음성 녹음❌ 없음
phoneCall전화 기능 관련❌ 없음
connectedDevice웨어러블, BLE 등 외부기기 연결❌ 없음
health헬스 데이터 수집❌ 없음
location위치 추적 서비스❌ 없음
remoteMessaging푸시 메시징 서비스 등❌ 없음
shortService짧은 시간 내 종료 예상 서비스❌ 없음
specialUseOS에서 특별 허용된 서비스❌ 없음
systemExempted시스템이 예외로 허용한 서비스❌ 없음

참조: https://developer.android.com/about/versions/15/behavior-changes-all
참조: https://developer.android.com/about/versions/15/behavior-changes-15
참조: https://developer.android.com/about/versions/15/changes/foreground-service-types

profile
장래희망 : 침대 위 녹아든 치즈

0개의 댓글