Android SDK 36 대응 - Edge-to-edge 예외 설정이 더 이상 동작하지 않는 이유와 해결 방법

  Android SDK 36 대응 - Edge-to-edge 예외 설정이 더 이상 동작하지 않는 이유와 해결 방법 Android SDK 35에서 SDK 36으로 마이그레이션하면서 가장 먼저 확인했던 부분 중 하나는 Edge-to-edge 설정이었다. 처음에는 Android 16에서 Edge-to-edge가 새롭게 적용되는 줄 알았지만, 공식 문서를 다시 확인해 보니 실제 변경 사항은 조금 달랐다. Edge-to-edge 자체는 이미 Android 15(API 35)부터 기본 적용되었다. Android 16(API 36)에서는  Edge-to-edge를 임시로 비활성화하기 위해 사용하던 예외 설정이 더 이상 동작하지 않는다. 이번 글에서는 이 변경 사항이 무엇인지, 어떤 프로젝트가 영향을 받는지, 그리고 어떻게 대응해야 하는지 정리해 보려고 한다. Edge-to-edge는 SDK 36에서 새롭게 추가된 기능이 아니다 많은 글에서 “Android 16부터 Edge-to-edge가 적용된다”고 설명하지만, 이는 정확하지 않다. 실제로 Edge-to-edge는  Android 15(API 35)  에서 targetSdkVersion 35 이상을 대상으로 기본 적용되었다. 즉 Android 14 이하 → 기존 방식 Android 15(API 35) → Edge-to-edge 기본 적용 Android 16(API 36) → 기존 예외 설정 제거 이것이 가장 큰 차이점이다. 문제가 되는 설정은 무엇인가? Android 15 대응 당시 많은 프로젝트에서는 Theme에 다음 속성을 사용하여 기존 화면을 유지했다. <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item> 이 설정을 사용하면 Window Insets 처리를 하지 않아도 기존처럼 화면을 표시할 수 있었다. 예를 들면 <style name="AppTheme" parent="Theme...

Android SDK 35 → 36 마이그레이션에서 실제 수정한 항목 7가지

Android SDK 35 → 36 마이그레이션에서 실제 수정한 항목 7가지 Android 프로젝트를 운영하다 보면 매년 새로운 Target SDK 대응 작업을 하게 된다. 하지만 모든 SDK 업데이트가 대규모 수정을 요구하는 것은 아니다. Android 15(API 35)는 Edge-to-edge가 기본 적용되는 등 UI 측면에서 큰 변화가 있었던 반면, Android 16(API 36)은 기존 정책을 강화하고 일부 API의 동작을 변경하는 수준의 업데이트가 많다. 이번 프로젝트에서는 기존 Android SDK 35 기반 앱을 SDK 36으로 마이그레이션했다. 생각보다 수정해야 할 부분은 많지 않았지만, 몇 가지는 반드시 확인해야 하는 항목들이 있었다. 이 글에서는 실제로 SDK 36 대응 과정에서 확인했던 주요 수정 사항들을 정리해 보려고 한다. 개발 환경 마이그레이션 전후 환경은 다음과 같다. 항목 변경 전 변경 후 compileSdk 35 36 targetSdk 35 36 minSdk 23 23 언어 Java Java 프로젝트는 Java 기반의 일반적인 Android 애플리케이션이며, WebView와 다양한 시스템 API를 사용하고 있다. 1. Edge-to-edge 예외 설정 제거 여부 확인 가장 먼저 확인한 것은 Edge-to-edge였다. 처음에는 SDK 36에서 새롭게 적용된 정책이라고 생각했지만, 다시 확인해 보니 Edge-to-edge는 이미 Android 15(API 35)부터 기본 적용되어 있었다. SDK 36에서 달라진 점은 기존에 사용하던 Edge-to-edge 예외 설정이 Android 16에서는 더 이상 동작하지 않는다는 것이다. 예를 들어 다음과 같은 설정으로 기존 레이아웃을 유지했던 프로젝트라면 반드시 확인이 필요하다. <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item> 이 속성은 Android 16에서 더 이상 효과가 없...