🍀 느슨해진 나의 블로그를 위한 Android 용어 정리 🍀
🚨 Android API Level
• Android OS 별로 정해진 Level
• 안드로이드 OS 운영 체제의 다양한 버전에서 제공하는 API 집합
• 이 API는 이전 버전의 API 와 호환되면서 각 버전의 운영 체제에서 사용할 수 있는 기능과 서비스를 포함한다
https://developer.android.com/tools/releases/platforms?hl=ko
minSDKVersion
• 앱을 실행하는데 필요한 최소 Android API 버전
• 앱의 minSDK 버전보다 OS 버전이 낮은 기기의 경우 앱이 설치되지 않는다
• minSDK 버전보다 낮은 기기의 경우 구글 플레이 스토어에서 해당 앱이 검색되지 않는다
targetSDKVersion
• 앱이 기기에서 동작할 때 사용되는 Android API 버전 (런 타임)
• 앱은 targetSDK 버전에 명시된 API 버전을 기준으로 동작한다
• OS 버전이 낮아 아직 targetSDKVersion 의 API 버전을 지원하지 않을 경우 기기 OS 버전을 따라간다
OS 버전 > targetSDKVersion
‣ 기기의 OS 버전 : API 32 | ➡️ 안드로이드 기기에서 API 30 을 기반으로 동작 |
‣ targetSDKVersion : API 30 |
• 해당 기기는 Android API 32 에 포함된 기능을 모두 사용할 수 있다
• 그러나 앱의 targetSDKVersion 이 API 30 으로 더 낮기 때문에 해당 기기는 Android API 30 을 기반으로 동작한다
OS 버전 == targetSDKVersion
‣ 기기의 OS 버전 : API 32 | ➡️ 안드로이드 기기에서 API 32 을 기반으로 동작 |
‣ targetSDKVersion : API 32 |
• 기기의 OS 버전과 앱의 targetSDKVersion 이 동일하기 때문에 Android API 32 을 기반으로 해당 기기에서 앱이 동작한다
• Android API 32 에서 제공하는 기능을 모두 사용할 수 있다
OS 버전 < targetSDKVersion
‣ 기기의 OS 버전 : API 30 | ➡️ 안드로이드 기기에서 API 30 을 기반으로 동작 |
‣ targetSDKVersion : API 32 |
• 앱의 targetSDKVersion 이 API 32 이더라도 기기의 OS 버전이 API 30 이기 때문에 해당 기기는 Android API 30 을 기반으로 동작한다
compileSDKVersion
• 컴파일 시 사용되는 Android API 버전 (컴파일 타임)
• 실제 개발 중에 코드 작성 시 사용할 수 있는 Android API 범위는 compileSDKVersion 에 의해 결정된다
• 컴파일 시에만 적용되므로 실제 기기에서 실행하는 동안에는 (런타임) 영향을 미치지 않는다
• 따라서 compileSDKVersion 은 최신으로 유지하기를 권장한다 (targetSDKVersion 을 변경하지 않는 한 실제 배포되는 앱에 영향을 미치지 않기 떄문)
• 최신 API 가 발표되면 compileSDKVersion 을 먼저 올려 최신 API 버전에 대한 테스트를 진행한 후 targetSDKVersion 을 올리게 된다
⭐️ targetSDKVersion 과 compileSDKVersion 을 동일하게 유지하는 것이 이상적이다
⭐️ Android SDK Version : minSDKVersion <= targetSDKVersion <= compileSDKVersion
🚨 Android Play Store 정책에 따른 targetSDK 업데이트
매년 Google Play Conosle 에서 요구하는 Google Play 앱의 대상 API 수준(target SDK Version) 이 업데이트 필요 합니다.
https://support.google.com/googleplay/android-developer/answer/11926878?hl=ko
8월 31일부터 최신 Android 출시로부터 1년 이내의 대상 API 수준을 타겟팅하지 않는 경우 앱을 업데이트할 수 없습니다.
그렇기 때문에 앱 업데이트를 출시하려면 2024년 8월 31일까지 대상 API 수준을 업데이트 를 진행해야 하고,
보통 7월 초에 경고로 메세지를 보내줍니다.
Google Play Console > 정책 및 프로그램 - 정책 상태 에서도 해당 내용을 자세하게 확인 가능하며
해결방법도 명시되어 있습니다.
앱 업데이트 작업시간이 더 필요한 경우 11월 1일까지 추가 시간 요청 을 통해 기한 연장을 요청할 수 있습니다.
https://developer.android.com/google/play/requirements/target-sdk?hl=ko
targetSDK 정책 해결
기한 내에 대상 API 수준(targetSDKVersion) 을 타겟팅하는 앱을 출시하였을 경우 약 반나절 정도 후에
앱의 최근 정책 위반이 해결됨 이라는 메세지를 받게 됩니다.
Google Play Console > 정책 및 프로그램 - 정책 상태 에서도 위반 사항이 해결된 것을 확인할 수 있습니다.
🚨 안드로이드 런타임 ART (Android RunTime)
컴파일 타임 (CompileTime)
• 개발자가 작성한 소스 코드를 기계 코드로 컴파일해야 프로그램을 실행할 수 있는데, 이 컴파일 프로세스를 컴파일 타임이라고 한다
런타임 (RunTime)
• 컴파일된 프로그램을 사용자가 열고 실행할 수 있는데 애플리케이션이 실행 중일 때를 런타임 이라고 한다
• 애플리케이션을 관리하기 위해서 특정한 컴파일러나 가상머신이 사용하는 기본 코드 라이브러리
• 애플리케이션이 실행되고 있는 동안의 동작
• 런타임 환경(Runtime Environment) : 프로세스나 애플리케이션을 위한 서비스를 제공하는 가상머신의 상태
안드로이드 런타임 (Android RunTime - ART)
Android 런타임(ART)은 Android의 앱 및 일부 시스템 서비스에서 사용하는 관리형 런타임입니다. ART와 그 전의 Dalvik은 원래 Android 프로젝트용으로 특별히 제작된 것으로, ART는 런타임으로서 Dalvik Executable(DEX) 형식 및 DEX 바이트 코드 사양을 실행합니다.
ART와 Dalvik은 DEX 바이트 코드를 실행하는 호환 가능한 런타임이므로, Dalvik용으로 개발된 앱은 ART로 실행 시에도 작동해야 합니다. 그러나 Dalvik에서 작동하는 기술 중 일부는 ART에서 작동하지 않습니다.
ART 주요 기능
• AOT(Ahead-of-time) 컴파일
• 가비지 컬렉션 개선
• 개발 및 디버깅 개선
https://source.android.com/docs/core/runtime?hl=ko
감사합니다 :)