최소 SDK 버전 / 대상 SDK 버전과 컴파일 SDK 버전의 차이점은 무엇입니까?


214

"최소 SDK 버전 / 대상 SDK 버전"과 "컴팩 SDK 버전"의 차이점은 무엇입니까? 최소 및 대상 SDK의 의미는 알고 있지만 SDK 버전 컴파일의 의미는 무엇입니까?

Eclipse에는 min / max 및 target sdk가 있지만 android studio에는 이러한 세 가지 설정이 있습니다.


나는 현재 내가 12으로 targetSdkVersion을 사용 응용 프로그램에서 일하고 내 모든 레이아웃은 매우 그럼 내가 23로 다시 변경하고 난 targetsdk 버전은 컴파일 된 버전 항상 동일해야합니다 생각 때문에 그것이 매력처럼 작동 비정상적으로 작동
샤 히드 Sarwar

답변:


232

분 SDK 버전은 응용 프로그램에서 실행할 수있는 안드로이드 SDK의 초기 릴리스입니다. 일반적으로 이는 이전 API의 문제, 기능 부족 또는 기타 동작 문제 때문입니다.

대상 SDK 버전은 응용 프로그램이 된 버전입니다 대상 에 실행합니다. 이상적으로는 일종의 최적의 실행 조건 때문입니다. "버전 19 용 앱을 만들려면"이 위치를 지정하십시오. 이전 또는 이후 릴리스에서 실행될 수 있지만 이것이 목표입니다. 이것은 주로 시장에서 응용 프로그램이 사용되는 현재 상태를 나타냅니다.

컴파일 SDK 버전은 당신의 IDE (또는 내가 생각 컴파일의 다른 수단) 당신이 게시 할 때 응용 프로그램을 만드는 데 사용하는 안드로이드의 버전입니다 .apk파일을. 응용 프로그램을 개발할 때 일반적으로 응용 프로그램을 컴파일해야하므로 응용 프로그램을 테스트하는 데 유용합니다. 이것은 APK로 컴파일하는 버전이므로 당연히 릴리스 버전이됩니다. 마찬가지로 대상 SDK 버전과 일치하는 것이 좋습니다.


내 컴파일 SDK 버전과 대상 SDK 버전이 동일합니다. API 레벨이 낮은 기기에서 앱을 실행할 때 앱이 다운됩니다. Android를 처음 사용하는데 어떻게 진행해야하나요?
prgmrDev

2
@prgmrDev 앱이 21보다 낮은 버전에서 충돌하는 경우 최소 SDK 버전을 21로 설정해야합니다. 이렇게하면 21 미만의 대상에서 실제로 응용 프로그램이 수정되지는 않으며, 더 낮은 버전에서는 앱이 지원되지 않습니다. 또한 응용 프로그램을 정확히 손상시키는 부분 (버전 21에서 변경된 내용)을 결정하고 해당 종속성을 처리하기위한 지원을 추가 할 수있는 옵션이 있지만 Android 초보자의 범위에 속하지 않는 많은 작업이 될 것으로 생각됩니다. 계획.
Matt

1
minSdkVersion = 14를 설정하면 어떻게됩니까? targetSdkVersion = 23; SDK를 19로 컴파일 하시겠습니까?
thadeuszlay

5
@thadeuszlay 귀하의 질문은 관련이 없습니다. 버전 23에서 실행하려는 경우 어떻게 19로 컴파일 할 수 있습니까? minSdkVersion <= targetSdkVersion <= compileSdkVersion
Asad

@Matt 예를 들어 compileVersion 26을 사용할 때 실수로 버전 21에서 지원되지 않는 기능 또는 Java API를 사용합니다. 죄송합니다, 정말 여기에 몇 가지 기본 개념을받지
HAART

83

공식은

minSdkVersion <= targetSdkVersion <= compileSdkVersion

minSdkVersion- 애플리케이션을 설치할 수있는 최소 Android 버전을 정의하는 마커입니다. 또한 Lint는 존재하지 않는 API 호출을 방지하기 위해 사용합니다. 또한 빌드 시간에 영향을 미칩니다. 따라서 빌드 플레이버를 사용하여 개발 중에 minSdkVersion을 최대 값으로 대체 할 수 있습니다. Android 팀에서 제공하는 모든 개선 사항을 사용하여 더 빠르게 빌드하는 데 도움이됩니다. 예를 들어, 일부 기능 Java 8은 특정 버전의 minSdkVersion에서만 사용 가능합니다.

targetSdkVersion -Android 시스템에서 특정 동작 변경 사항을 설정합니다.

예를 들면 다음과 같습니다.

  • Android 6.0부터 (API 레벨 23) Runtime Permissions도입되었습니다. targetSdkVersion22 이하로 설정 하면 응용 프로그램이 런타임에 일부 권한을 요청하지 않습니다.

  • Android 8.0 (API 레벨 26)부터 모든 notifications채널에 할당되어야합니다. 그렇지 않으면 나타나지 않습니다. Android 7.1 (API 레벨 25) 이하를 실행하는 기기에서 사용자는 앱별로 만 알림을 관리 할 수 ​​있습니다 (효과적으로 각 앱에는 Android 7.1 이하에서 하나의 채널 만 있음).

  • Android 9 (API 레벨 28)부터 시작 Web-based data directories separated by process합니다. 경우 targetSdkVersion28+ 그리고 당신은 몇 가지 만들어 WebView다른 프로세스를 당신은 얻을 것이다java.lang.RuntimeException

compileSdkVersion- 실제로는 SDK 플랫폼 버전이며 Gradle에게 어떤 Android SDK가 컴파일에 사용하는지 알려줍니다. .javaAndroid SDK에서 새로운 기능이나 디버그 파일 을 사용하려면 compileSdkVersion을 관리해야합니다. 또 다른 예는 AndroidX 를 사용하여 강제로 compileSdkVersion레벨 28 을 사용 compileSdkVersion 하는 것입니다. APK에는 포함되어 있지 않습니다compile time . 순전히에 사용됩니다 . compileSdkVersion을 변경해도 런타임 동작은 변경되지 않습니다. 예를 들어 새로운 컴파일러 경고 / 오류를 생성 할 수 있습니다. 따라서 항상 최신 SDK로 컴파일하는 것이 좋습니다. 기존 코드에 대한 새로운 컴파일 검사의 모든 이점을 얻고, 더 이상 사용되지 않는 API를 피하고 새로운 API를 사용할 수 있습니다. 하나 더 사실은compileSdkVersion >= Support Library version

자세한 내용은 여기를 참조 하십시오 . 또한 Android 8.0 으로 마이그레이션 하는 예를 살펴 보는 것이 좋습니다 .


9
targetSdkVersion과 compileSdkVersion의 실제 차이점을 실제로 설명하기 때문에 여기에 가장 좋은 대답
Dean Wild

@ yoAlex5 답변 주셔서 감사합니다. 많은 경우 targetSdkVersion과 compileSdkVersion이 동일합니다. 안드로이드가 두 개를 별도의 것으로 만든 이유는 하나를 처리하기에 충분하지 않거나 두 개의 별도 필드로 만드는 데 특별한 이유가 있습니까?
Manju

@Manju 당신은 SO 스레드에서 더 많은 것을 찾을 수 있습니다 stackoverflow.com/questions/26694108/…
yoAlex5

@ yoAlex5 '특정 동작 변경을 설정하는 Android 시스템'의 의미는 무엇입니까?
k_kumar 2016 년

@atishr '특정 행동 변화'는 '예를 들어'블록에 나열되어 있습니다
yoAlex5

74

분 SDK 버전은 응용 프로그램을 실행하는 데 필요한 안드로이드 운영 체제의 최소 버전입니다.

대상 SDK 버전은 앱이 실행되도록 만들어 졌는지 안드로이드의 버전입니다.

컴파일 SDK 버전은 것을 안드로이드의 버전입니다 빌드 도구 가 사용하는 컴파일 및 출시, 실행 또는 디버깅하기 위해 응용 프로그램을 빌드 할 수 있습니다.

일반적 으로 컴파일 SDK 버전과 대상 SDK 버전이 동일합니다.


23
그리고 그들이 같은 장단점이 아닐 때?
powder366

4

compileSdkVersion : compileSdkVersion은 앱이 컴파일되는 API의 버전입니다. 즉, 해당 버전의 API에 포함 된 Android API 기능 (및 모든 이전 버전)을 사용할 수 있습니다. API 16 기능을 사용하려고하지만 compileSdkVersion을 15로 설정하면 컴파일 오류가 발생합니다. compileSdkVersion을 16으로 설정하면 API 15 장치에서 앱을 계속 실행할 수 있습니다.

minSdkVersion : min sdk 버전은 애플리케이션을 실행하는 데 필요한 최소 버전의 Android 운영 체제입니다.

targetSdkVersion : 대상 SDK 버전은 앱이 실행되는 버전입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.