programing

compileSdkVersion과 targetSdkVersion의 차이점은 무엇입니까?

css3 2023. 6. 14. 22:07

compileSdkVersion과 targetSdkVersion의 차이점은 무엇입니까?

Gradle과 함께 빌드하기 위한 문서를 살펴보았지만, 여전히 차이점이 무엇인지 잘 모르겠습니다.compileSdkVersion그리고.targetSdkVersion사실은.

그 말은 다음과 같습니다.

The `compileSdkVersion` property specifies the compilation target.

그럼, "편집 대상"은 무엇입니까?

이를 해석할 수 있는 두 가지 방법이 있습니다.

  1. compileSdkVersion앱을 구축하는 데 사용되는 컴파일러 버전입니다.targetSdkVersion는 "애플리케이션이 대상으로 하는 API 수준"입니다. (만약 그렇다면,compileSdkVersion 보다크같합야니다아거나다▁▁the보다 크거나 .targetSdkVersion?
  2. 그들은 같은 뜻입니다."컴파일 대상" == "응용 프로그램이 대상으로 하는 API 수준"
  3. 다른 거?

질문은 전에도 한 적이 있는 것으로 알고 있습니다만, 하나의 대답은 단지 문서를 인용하는 것입니다. 이것은 저에게 명확하지 않은 것입니다.

compileSdkVersion

compileSdkVersion앱이 컴파일되는 API의 버전입니다.즉, 해당 버전의 API에 포함된 Android API 기능과 모든 이전 버전을 사용할 수 있습니다. 16을 설정하면compileSdkVersion15까지 컴파일 오류가 발생합니다.설정하는 경우compileSdkVersion앱의 실행 경로가 API 16에 특정한 API를 호출하지 않는 한 API 15 장치에서 앱을 실행할 수 있습니다.

targetSdkVersion

targetSdkVersion앱이 컴파일되는 방식이나 사용할 수 있는 API와는 아무런 관련이 없습니다.targetSdkVersion사용자가 지정한 버전(가능하면 최대 및 포함)에서 앱을 테스트했음을 나타냅니다.이는 안드로이드 OS가 OS 기능 측면에서 앱을 어떻게 처리해야 하는지에 대한 힌트로 제공하는 인증 또는 종료와 비슷합니다.

예를 들어 설명서에 나와 있는 처럼 다음과 같습니다.

예를 들어 이 값을 "11" 이상으로 설정하면 Android 3.0 이상에서 실행할 때 시스템에서 새 기본 테마(Holo)를 앱에 적용할 수 있습니다.

Android OS는 런타임에 이 값을 기반으로 OS 환경에서 앱이 스타일화되거나 실행되는 방식을 변경할 수 있습니다.이 값의 영향을 받는 몇 가지 알려진 예가 있으며 목록은 시간이 지남에 따라 증가할 가능성이 높습니다.

모든 실질적인 목적을 위해 대부분의 앱은 설정을 원할 것입니다.targetSdkVersion최신 버전의 API로 이동할 수 있습니다.이렇게 하면 최신 Android 장치에서 앱의 모양이 최대한 좋아집니다. 경는우를 하지 않은 targetSdkVersion기본값은 다음과 같습니다.minSdkVersion.

하나의 라이너 가이드로서:

minSdkVersion <= targetSdkVersion <= compileSdkVersion

이상적임:

minSdkVersion (lowest possible) <= targetSdkVersion == compileSdkVersion (latest SDK)

이안 레이크의 이 훌륭한 게시물에서 더 읽어보십시오.

추신. 그리고 아래 답변에서 @ssshturma에 의해 잘린 것처럼:

게에늦었다니습임. 에 몇 ,compileSdkVersion, 앱컴의파반 API전버면,targetSdkVersion앱을 테스트한 버전을 나타냅니다.

다음과 같은 참고 사항으로 답변을 보완하고 싶습니다.

  1. 이는 권한이 요청되는 방식에 영향을 미칩니다.
  • 기기가 Android 6.0(API 레벨 23) 이상을 실행하고 있고 앱이targetSdkVersion23 이상인 경우, 앱은 런타임에 사용자에게 권한을 요청합니다.
  • 기기가 Android 5.1(API 레벨 22) 이하를 실행 중이거나 앱의targetSdkVersion, 할 때 을 부여하도록 합니다.22 이하서는사앱때설사시권용게다한요부니청합록여도하을에자이스템치할을에용자가▁is다니22요합청▁the▁or▁asks▁22▁the▁system▁toissions▁when▁the▁perm▁user▁app▁grant록,도▁the▁lower▁the하부여.
  1. 에 약에만.compileSdkVersion앱에서 선언한 버전보다 높습니다.targetSdkVersion시스템이 호환성 동작을 활성화하여 앱이 예상대로 계속 작동하도록 보장할 수 있습니다.(ref)

  2. 새로운 Android 릴리즈마다...

  • targetSdkVersion수준에 후 .
  • compileSdkVersion반면에, 새로운 플랫폼 버전 전용 기능을 추가하지 않는 한 변경할 필요가 없습니다.
  • 결과적으로, 반면에targetSdkVersion는 종종의(으)로 거종종작다니보다 (으로 작습니다.compileSdkVersion잘 유지 관리된/확립된 앱을 볼 수 있는 것은 드문 일이 아닙니다.targetSdkVersion > compileSdkVersion

compileSdkVersion안정적인 최신 버전이어야 합니다.targetSdkVersion완전히 테스트되어야 하며 다음과 같거나 이하여야 합니다.compileSdkVersion.

The CompileSdkVersion개발 과정에서 컴파일 등을 위해 앱이 함께 작업하는 SDK 플랫폼 버전입니다(항상 최신 버전을 사용해야 함). 중인 인 『API』와 됩니다.

enter image description here

이것은 당신의 웹사이트에서 볼 것입니다.build.gradle파일 이름:

enter image description here

targetSdkVersion:개발 프로세스 후 앱이 앱 스토어로 전송되는 정보를 포함합니다.TARGET the SPECIFIED version of the Android platform앱의 기능에 따라 현재보다 낮은 API 버전을 대상으로 할 수 있습니다.예를 들어, 현재 버전이 23인 경우에도 API 18을 대상으로 할 수 있습니다.

이 공식 구글 페이지를 잘 보세요.

이전 답변에서 많은 차이점을 볼 수 있으므로 안드로이드의 웹 페이지를 따라 여기서 조금 설명해 보겠습니다.

A - Android의 설명

https://developer.android.com/guide/topics/manifest/uses-sdk-element.html 에 따르면:

플랫폼 버전 및 API 수준 선택 응용 프로그램을 개발할 때 응용 프로그램을 컴파일할 플랫폼 버전을 선택해야 합니다.일반적으로 응용프로그램이 지원할 수 있는 플랫폼의 가장 낮은 버전을 기준으로 응용프로그램을 컴파일해야 합니다.

Android에 따르면 다음과 같은 순서가 적합합니다.

compiledSdkVersion = minSdkVersion <= targetSdkVersion

B - 다른 사람들도 하는 말

일부 사용자는 사용 가능한 가장 높은 컴파일된 SkdVersion을 항상 사용하는 것을 선호합니다.minSdkVersion보다 새로운 API 기능을 사용하는지 확인하기 위해 코드 힌트를 사용하므로 코드를 사용하지 않도록 변경하거나 런타임에 사용자 API 버전을 확인하여 이전 API 버전에 대한 폴백과 함께 사용할 수 있습니다.

더 이상 사용되지 않는 사용에 대한 힌트가 코드에 나타나 새로운 API 수준에서 더 이상 사용되지 않음을 알 수 있으므로 원하는 경우 그에 따라 대응할 수 있습니다.

따라서 다른 사람들에 따르면 이것이 올바른 순서일 것입니다.

minSdkVersion <= targetSdkVersion <= compiledSdkVersion (highest possible)

무엇을 해야 하나?

그것은 당신과 당신의 앱에 따라 다릅니다.

런타임에 사용자의 API 수준에 따라 다른 API 기능을 제공할 계획이라면 옵션 B를 사용합니다.코딩하는 동안 사용하는 기능에 대한 힌트를 얻을 수 있습니다.런타임에 사용자 API 수준을 확인하지 않고 minSdkVersion보다 새로운 API 기능을 사용하지 않도록 하십시오. 그렇지 않으면 앱이 중단됩니다.이 접근 방식은 코딩을 하면서 새로운 것과 오래된 것을 배울 수 있는 이점도 있습니다.

새로운 기능이나 오래된 기능을 이미 알고 있고 절대 업데이트되지 않는 일회성 앱을 개발 중이거나 새로운 API 기능을 조건부로 제공하지 않을 것이 확실하다면 A 옵션을 사용하십시오.당신은 사용하지 않는 힌트에 신경 쓰지 않을 것이고, 당신이 그것을 하고 싶어도 더 새로운 API 기능을 사용할 것입니다.

나의 2센트:SDK 버전을 기준으로 컴파일하지만 "최소 SDK 버전"이 지원하지 않는 API는 호출하지 않도록 주의하십시오.즉, 최신 버전의 SDK를 기준으로 컴파일할 수 있습니다.

"target version"에 대해서는 단순히 처음에 목표로 계획한 것과 테스트한 것을 의미합니다.만약 당신이 실사를 하지 않았다면, 이것은 Android가 "Oreo"에 "Rollipop" 대상 앱을 배포하기 전에 몇 가지 추가 검사를 수행해야 한다는 것을 알리는 방법입니다.

따라서 "대상 버전"은 "최소 SDK 버전"보다 낮지는 않지만 "컴파일된 버전"보다 높을 수는 없습니다.

compiledSdkVersion==> 코드바이트코드로 컴파일해야 하는 SDK 버전(개발 환경에서 사용) 포인트: SDK의 마지막 버전을 사용하는 것이 좋습니다.

minSdkVersion==> 이 항목은 APK 설치에 사용됩니다(운영 환경에서 사용됨).예:

if(client-sdk-version   <   min-sdk-versoin )
    client-can-not-install-apk;
else
    client-can-install-apk;

직접적인 질문에 왜냐하면 이미 상세한 이 있기 , 문서와는 로, 는 같은 을 직않것는대답당질답신상이왜많있다면때세한니미은입냐기문하하스안지언만문반안로는드있와이대서로드드이로드가다는니튜오습디가치할급의접문이에적하지인들변▁not▁for▁suggest▁the▁version▁same당ing▁direct▁studio,▁since▁android▁to,ing▁to,신▁document▁use▁answers▁is▁answering'▁questions▁to▁but▁yourationcompileSDKVersion그리고.targetSDKVersion.

enter image description here

빠른 요약:

minSDK 버전은 트위터 핸들의 최신 항목을 참조하십시오. https://twitter.com/minSdkVersion

TargetSDK version: twitter handle: https://twitter.com/targtSdkVersion 의 최신 항목을 참조하거나 devel https://developer.android.com/guide/topics/manifest/uses-sdk-element.html 에 표시된 최신 API 레벨을 사용합니다.

컴파일된 버전: TargetSDK 버전과 동일하게 만듭니다.

maxSdkVersion: Android의 조언은 앱이 향후 안드로이드 릴리스에서 수행되지 않도록 제한하고 싶지 않기 때문에 이를 설정하지 않는 것입니다.

Visual Studio 2017(15.8.5)의 Android 프로젝트 속성의 응용 프로그램 설정은 다음과 같이 결합되었습니다.

enter image description here

compileSdkVersion

compileSdkVersion은 코드를 컴파일할 Android SDK의 버전을 지정합니다.이는 앱이 지정된 버전과 이전 버전에 포함된 모든 API를 사용할 수 있음을 의미합니다.

예를 들어, compileSdkVersion을 30으로 설정하면 앱이 버전 30까지 도입된 모든 API를 사용할 수 있음을 의미합니다.예를 들어 Android 5.0(API 레벨 21) 이상에서 도입된 Camera2 API를 사용하고자 할 때 compileSdkVersion을 30으로 설정한 경우 앱에서 문제 없이 이 API를 사용할 수 있습니다.그러나 Android 31(아직 출시되지 않음)에 도입된 API를 사용하려고 하면 설정한 compileSdkVersion에서 해당 API를 아직 사용할 수 없기 때문에 컴파일 시간 오류가 발생합니다.

targetSdkVersion

targetSdkVersion 앱이 실행되도록 설계된 Android SDK 버전입니다.앱이 테스트되었으며 실행될 예정인 API 수준을 지정하고 최신 Android 버전에서 앱이 제공하는 호환성 수준을 나타냅니다.

예를 들어 대상 SdkVersion을 30으로 설정하면 Android 30 이상을 실행하는 장치에서 앱이 실행되도록 설계되었음을 나타냅니다.즉, 버전 30에 도입된 API에 대해 앱을 테스트하고 해당 장치에서 앱이 올바르게 작동하는지 확인해야 합니다.그러나 이는 사용자가 명시적으로 코드화하지 않는 한 안드로이드의 상위 버전에 도입된 새로운 기능과 API를 사용할 수 없다는 것을 의미합니다.

요약

요약하면 컴파일 SdkVersion은 빌드 프로세스 중에 사용할 수 있는 API 집합을 결정하는 반면 대상 SdkVersion은 앱이 실행되도록 설계된 API 수준을 지정하고 앱이 최신 버전의 Android에서 제공하는 호환성 수준을 나타냅니다.

이상적으로는 compileSdkVersiontargetSdkVersion이 동일해야 하며 둘 다 최신 SDK를 가리킵니다.그러나 물론 해당 버전에 도입된 모든 변경 사항이 앱에서 원활하게 작동하는지 테스트한 후에만 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/26694108/what-is-the-difference-between-compilesdkversion-and-targetsdkversion