본문 바로가기

안드로이드 개발

Edge-to-Edge Android SDK 35 마이그레이션 가이드

반응형

1. Edge-to-Edge란?

Edge-to-Edge는 앱 콘텐츠가 시스템 바(상태 바, 네비게이션 바, 캡션 바) 영역까지 확장되어, 화면 전체를 활용하는 UI 방식입니다. Android 15(API 35) 이상을 타겟팅하면, 앱이 별도의 설정 없이도 자동으로 Edge-to-Edge 모드로 동작하게 됩니다^1^3^5.


2. SDK 35 마이그레이션 시 변화

  • 자동 적용: Android 15 이상 기기에서 targetSdkVersion 35 이상으로 빌드된 앱은 Edge-to-Edge가 강제 적용됩니다. 기존처럼 시스템 바 영역에 자동 패딩이 들어가지 않고, 앱 콘텐츠가 화면 끝까지 표시됩니다^1^3^5.
  • 시스템 바 투명화: 상태 바와 네비게이션 바가 투명(또는 반투명)하게 처리되어, 앱 UI가 시스템 바 아래까지 확장됩니다^2^4^6.
  • UI 겹침 이슈: TopAppBar, BottomNavigationBar, FAB 등 주요 UI 컴포넌트가 시스템 바와 겹칠 수 있습니다. 이로 인해 버튼이 눌리지 않거나, 텍스트가 가려지는 문제가 발생할 수 있습니다^1.

3. 마이그레이션 핵심 체크리스트

  • 인셋(WindowInsets) 처리
    시스템 바와 겹치는 UI 요소에 적절한 패딩을 주어야 합니다. 단말마다 시스템 바 크기가 다르므로, 고정값이 아닌 인셋 값을 동적으로 적용해야 합니다^1.
ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
    val statusBar = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top
    val navigationBar = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom
    v.setPadding(0, statusBar, 0, navigationBar)
    insets
}
  • Material3(Compose) 등 최신 컴포넌트 활용
    최신 Material 컴포넌트는 인셋 처리를 자동으로 지원합니다. 커스텀 뷰나 레거시 레이아웃은 직접 인셋을 적용해야 합니다.
  • enableEdgeToEdge() 함수
    Android 14 이하 버전 호환을 위해서는 androidx.activity:activity-ktxenableEdgeToEdge()를 사용해 수동 적용이 필요합니다.
    Android 15 이상에서는 별도 호출 없이 자동 적용됩니다^2^4.

4. 마이그레이션 단계별 가이드

  1. targetSdkVersion을 35로 올린다.
  2. 앱 전반의 UI가 시스템 바와 겹치지 않는지 점검한다.
  3. 필요한 곳에 인셋을 적용해 UI 겹침을 해결한다.
  4. Android 14 이하 지원이 필요하다면 enableEdgeToEdge()를 onCreate에서 호출한다.

5. 마이그레이션 시 주의사항

  • 고정 패딩 대신 WindowInsets를 사용해야 다양한 단말에서 안전하게 대응할 수 있습니다^6.
  • 시스템 바 색상 제어가 제한되므로, 앱의 디자인 시스템을 점검해야 합니다.
  • UI 테스트를 통해 모든 화면에서 콘텐츠가 정상적으로 표시되는지 꼼꼼히 확인해야 합니다.

Android 15(API 35) 이상을 타겟팅하면 Edge-to-Edge가 강제로 적용되어, 인셋 처리 없이 기존 방식으로 개발된 앱은 일부 UI가 시스템 바에 가려질 수 있습니다. 마이그레이션 시 반드시 인셋 처리를 점검하세요^1^6.


참고:

반응형