
2026년 8월 31일부터 Google Play에 신규 앱을 등록하거나 기존 앱을 업데이트하려면 Android 16(API 수준 36) 이상을 타겟팅해야 합니다.

이번 글에서는 기존 앱을 API 36으로 업데이트할 때 필수적으로 확인해야 하는 내용을 정리해보겠습니다.
Android 16 배포일: 2025.06.10 / API Level 36
한줄 요약:
Edge-to-Edge와 뒤로가기, 대화면 UI를 우선 확인하고 백그라운드 작업과 Intent 및 네이티브 라이브러리 호환성을 점검해야 하는 버전
Android 16 대응을 시작하려면 compileSdk와 targetSdk를 36으로 설정해야 합니다.
android {
compileSdk = 36
defaultConfig {
targetSdk = 36
}
}
compileSdk가 36이더라도 targetSdk가 35라면 Google Play의 업데이트 정책을 충족하지 못합니다.
반대로 targetSdk를 올리는 순간 API 36 대상 앱에 적용되는 동작 변경사항이 활성화됩니다. 빌드 성공 여부만 확인하지 말고 Android 16 기기에서 주요 화면과 기능을 테스트하는 과정이 필요해요.
Android 15에서는 Edge-to-Edge가 기본 적용됐지만, 별도의 속성을 사용해 일시적으로 적용을 피할 수 있었습니다.
Android 16을 타겟팅한 앱을 Android 16 이상 기기에서 실행하면 이 opt-out 방식은 더 이상 동작하지 않습니다.
Window Insets 처리가 빠져 있다면 다음과 같은 문제가 발생할 수 있어요.
Compose에서는 Scaffold의 innerPadding이 실제 콘텐츠에 적용됐는지 확인하고, 필요한 경우 WindowInsets 또는 safeDrawingPadding()을 사용해야 합니다.
Scaffold { innerPadding ->
Content(
modifier = Modifier.padding(innerPadding),
)
}
View 시스템에서는 ViewCompat.setOnApplyWindowInsetsListener()를 사용해 시스템 바 영역을 처리할 수 있습니다.
Android 16을 타겟팅하면 태블릿이나 폴더블처럼 smallestWidth가 600dp 이상인 화면에서 일부 방향 및 화면 비율 제한이 무시됩니다.
영향을 받는 설정:
android:screenOrientationandroid:resizeableActivityandroid:minAspectRatioandroid:maxAspectRatiosetRequestedOrientation()세로 화면만 전제로 만든 앱은 대화면이나 가로 화면에서 레이아웃이 늘어나거나 일부 콘텐츠가 잘릴 수 있습니다.
다음 환경에서 주요 화면을 확인하는 것이 좋아요.
아직 대응이 어렵다면 이전 동작을 유지하는 임시 opt-out이 있지만, API 37에서는 사용할 수 없습니다. 장기적으로는 Window Size Class를 기준으로 적응형 레이아웃을 구성해야 합니다.
Android 16을 타겟팅한 앱을 Android 16 이상 기기에서 실행하면 Predictive Back이 기본으로 활성화됩니다.
기존의 onBackPressed() 오버라이드와 KeyEvent.KEYCODE_BACK 직접 처리 방식은 더 이상 정상적으로 호출되지 않습니다.
View 시스템에서는 OnBackPressedDispatcher, Compose에서는 BackHandler를 사용해야 합니다.
BackHandler {
// 뒤로가기 처리
}
특히 WebView, 다이얼로그, 바텀시트처럼 커스텀 뒤로가기 동작이 있는 화면을 확인해야 해요. 제스처 탐색뿐 아니라 3버튼 탐색 모드에서도 테스트하는 것이 좋습니다.
Android 16에서는 기존에 실행 시간 제한이 없었던 일부 백그라운드 작업에도 할당량이 적용됩니다.
Android 16에서는 사용 빈도가 높은 Active 등급의 앱에도 백그라운드 작업 할당량이 적용됩니다. 일반 작업은 최근 60분 동안 최대 약 20분까지 실행할 수 있으며, 긴급 작업으로 등록한 Expedited Job도 별도의 할당량을 적용받습니다.
다음과 같은 기능이 있다면 확인이 필요합니다.
작업이 예상보다 일찍 중단된다면 WorkInfo.getStopReason() 또는 JobParameters.getStopReason()을 기록해 원인을 확인할 수 있습니다.
Android 16에서는 외부에서 전달된 Intent 안의 다른 Intent를 검증 없이 실행하는 Intent Redirection 공격에 대한 기본 보호가 강화됐습니다.
다음과 같은 기능을 사용하는 앱은 확인이 필요해요.
외부에서 받은 Intent를 그대로 실행하기보다 필요한 값만 추출하고 검증한 뒤 앱 내부의 명시적 Intent를 새로 만드는 것이 안전합니다.
Android 16에는 보안 검사를 해제하는 removeLaunchSecurityProtection()도 추가됐지만 일반적인 해결 방법으로 사용하면 안 됩니다. 안전성이 보장되고 다른 대안이 없을 때만 제한적으로 검토해야 합니다.
앱이나 외부 SDK에 .so 네이티브 라이브러리가 포함되어 있다면 16KB Page Size 지원 여부를 확인해야 합니다.
Android 16은 일부 4KB 정렬 앱을 위한 호환 모드를 제공하지만, 이는 임시 대응입니다. 안정적인 실행을 위해서는 네이티브 라이브러리가 실제로 16KB 정렬을 지원해야 합니다.
확인해야 할 항목:
.so 파일이 포함되어 있는지직접 NDK를 사용하지 않더라도 외부 SDK에 .so 파일이 포함될 수 있으므로 Android Studio의 APK Analyzer를 통해 확인하는 것이 좋아요.
| 영역 | 확인 항목 |
|---|---|
| 빌드 | compileSdk와 targetSdk를 36으로 설정 |
| UI | 시스템 바와 상단·하단 UI가 겹치지 않는지 확인 |
| UI | WebView와 키보드 표시 상태에서 콘텐츠가 가려지지 않는지 확인 |
| 대화면 | 태블릿, 폴더블, 가로 및 분할 화면 테스트 |
| 내비게이션 | onBackPressed()와 KEYCODE_BACK 사용 여부 확인 |
| 내비게이션 | WebView, 다이얼로그, 바텀시트 뒤로가기 테스트 |
| 백그라운드 | WorkManager와 장시간 데이터 전송의 중단 여부 확인 |
| 보안 | 딥링크, OAuth, 공유 및 푸시 클릭 테스트 |
| 호환성 | 네이티브 라이브러리의 16KB Page Size 지원 확인 |
일반적인 앱이라면 우선 다음 세 가지를 집중적으로 확인하면 됩니다.
WorkManager, 외부 Intent 또는 네이티브 라이브러리를 사용하는 앱이라면 백그라운드 작업, Intent Redirection 및 16KB Page Size도 추가로 확인해야 합니다.
모든 변경사항을 한 번에 적용하기보다 Android 16 기기에서 기존 빌드와 API 36 빌드를 비교하면서 주요 사용자 흐름을 테스트해보는 것이 가장 안전합니다.