통합 차량 관제 시스템 용어 사전
시스템 구성targetSdkVersion

targetSdk

앱이 '이 버전까지 검증했다'고 선언하는 안드로이드 버전. 동작 변경이 이 값을 기준으로 적용된다.

안드로이드 앱이 "나는 이 버전까지 맞춰 검증했다" 고 선언하는 값이다. 헷갈리기 쉬운 세 값 중 하나다.

minSdk이 버전 미만에는 설치 안 됨
targetSdk동작 변경이 여기까지 적용된다
compileSdk컴파일에 쓰는 SDK — 실행 동작과 무관

핵심 — 하위 호환의 스위치다

안드로이드가 새 제약을 넣을 때, 기존 앱을 한꺼번에 깨뜨리지 않는다. 대신 targetSdk 를 기준으로 나눈다.

targetSdk 30 인 앱을 Android 15 에서 실행
  → Android 12 이후의 새 제약 상당수가 적용되지 않는다 (구버전 동작 유지)

targetSdk 35 로 올리면
  → 그 사이의 모든 동작 변경이 한꺼번에 적용된다

그래서 올릴 때 깨진다. 낮게 두고 미루면 나중에 여러 버전의 변경이 동시에 몰려온다 — 포그라운드 서비스 타입, BLE 권한, 백그라운드 제약이 한 번에.

미룰 수도 없다

구글 플레이가 최신 버전 대비 일정 기간 안의 targetSdk 를 요구한다. 기한이 지나면 신규 등록도 업데이트도 막힌다. 개인 프로젝트라 배포를 안 하더라도, 동작 검증은 실제 배포될 값 기준으로 해야 의미가 있다.

이 프로젝트에 걸리는 것들

targetSdk 를 올리면서 반드시 확인해야 하는 것이 셋이다.

Android 12   BLE 가 런타임 권한으로 분리 — BLUETOOTH_SCAN / CONNECT
Android 14   포그라운드 서비스 타입 미선언 시 크래시
Android 15   백그라운드에서 포그라운드 서비스 시작 차단

셋 다 컴파일은 통과하고 런타임에 터진다. 권한 거부 경로와 백그라운드 복귀 경로를 실제로 밟아 봐야 발견된다 — 정상 흐름만 눌러 보면 안 나온다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 모바일 인터페이스 — 요청 생애주기·CDM·GATT 설계