안드로이드 개발

[해결] Play 콘솔 edge-to-edge '지원 중단된 API' 경고 — 범인은 themes.xml이었습니다

피커 2026. 11. 3. 01:28
728x90
반응형

Play 콘솔에 앱을 올리면 출시 개요에 "권장 조치"가 달릴 때가 있어요. 요즘 제일 자주 보이는 게 edge-to-edge 관련 경고예요. 영어로는 대략 이런 문구고요.

Your app uses deprecated APIs or parameters for edge-to-edge

한국어 콘솔에서는 "더 넓은 화면 표시를 위해 지원 중단된 API 또는 매개변수를 사용함" 비슷한 문구로 나와요.

저도 이 경고를 받고 코드를 검색해봤는데, 지원 중단 API가 하나도 안 나왔어요. "우리 코드엔 없다"고 넘겼는데 다음 버전에도 경고가 또 달리더라고요. 다시 찾아보니 범인은 코드가 아니라 themes.xml에 있었어요.

경고가 말하는 API

Android 15(SDK 35)부터는 앱이 기본으로 화면 전체를 써요. 상태바와 내비게이션 바 뒤까지 앱 화면이 깔리는 거죠. 이게 edge-to-edge예요.

그러면서 상태바 색을 직접 칠하던 API들이 지원 중단됐어요. 경고에 주로 찍히는 건 이 두 개예요.

Window.setStatusBarColor()
Window.setNavigationBarColor()

그래서 다들 .kt, .java 파일에서 이 메서드 이름으로 검색해봐요. 저도 그랬고요. 그런데 안 나와요.

범인은 themes.xml이었어요

코드 검색에 안 걸리는 이유 — themes.xml의 같은 API

코드 검색에 안 걸리는 이유 — themes.xml의 같은 API

테마 파일에 이런 줄이 있었어요.

<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>

이 XML 속성이 내부적으로는 똑같은 지원 중단 API예요. 그런데 코드에서는 setStatusBarColor, XML에서는 android:statusBarColor라서 메서드 이름으로 검색하면 안 걸려요. 상태바를 투명하게 만들려고 예전에 넣어둔 줄이라 존재 자체를 잊고 있었어요.

edge-to-edge에서는 어차피 시스템 바가 투명이라 이 두 줄은 지워도 화면에 아무 변화가 없어요. 지우고 다시 빌드하면 돼요.

검색할 땐 이렇게 하면 코드와 XML을 한 번에 찾을 수 있어요.

grep -rn "statusBarColor\|navigationBarColor" app/src/main

저는 이걸 지우고 나서 함께 잡히던 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 관련 항목도 3건에서 0건으로 줄었어요.

그래도 경고가 남는다면

지울 것과 그대로 둘 것

지울 것과 그대로 둘 것

테마를 정리해도 setStatusBarColor 경고가 계속 남을 수 있어요. 이건 내 코드가 아니라 라이브러리 안쪽에서 부르는 거예요.

릴리스 빌드의 mapping.txt로 역추적해보면 androidx.activity의 EdgeToEdgeApi26, Api29, Api35 같은 클래스가 나와요. enableEdgeToEdge()가 내부에서 부르는 거죠. activity 라이브러리를 1.13.0으로 올려봤는데도 그대로였어요. Material의 BottomSheetDialog도 같은 이유로 잡혀요.

이유는 하위 호환이에요. minSdk가 26~29라면 Android 10~14 기기에서는 그 API가 지원 중단된 게 아니라 실제로 필요한 경로예요. 라이브러리가 OS 버전에 따라 나눠서 부르는 거예요.

이걸 없애려면 enableEdgeToEdge()를 버리고 인셋 처리를 전부 직접 짜야 해요. 그런데 그건 Play가 권장하는 방향과 정반대예요. 그래서 이 부분의 경고는 그냥 두시는 게 맞아요. 게시가 막히는 경고도 아니고요.

정리하면

edge-to-edge 경고 체크리스트

edge-to-edge 경고 체크리스트

  1. enableEdgeToEdge()를 호출하고 인셋을 처리합니다.
  2. themes.xml에서 android:statusBarColor, android:navigationBarColor를 지웁니다. 이게 제일 잘 놓치는 부분이에요.
  3. 코드에 남은 setStatusBarColor 호출도 지웁니다.
  4. 그래도 남는 경고가 androidx나 Material 내부라면 그대로 둡니다.

이 경고를 처음 겪은 건 제가 만든 AI 노래 만들기 앱 Aria였어요. 가사나 주제만 적으면 노래를 만들어 주는 앱인데, 업데이트 때마다 이 경고가 따라붙어서 결국 끝까지 파봤어요 ^^

▶ Aria 플레이 스토어에서 보기

반응형