minSdkVersion? targetSdkVersion?
minSdkVersion ?
애플리케이션이 실행하는 데 필요한 최소 API 레벨을 지정하는 정수입니다. Android 시스템은 시스템의 API 레벨이 지정된 값보다 낮은 경우 사용자 애플리케이션을 설치하는 것을 방지합니다.
만약, 이 값을 지정하지 않을 경우 시스템이 애플리케이션이 모든 Android 버전과 호환됨을 나타내는 기본값 '1'을 가정합니다. 애플리케이션이 모든 버전과 호환되지 않고 적절한 minSdkVersion을 선언하지 않은 경우, 지정된 API 레벨 미만의 시스템에 설치된 애플리케이션은 사용할 수 없는 API에 엑세스하려고 시도하면 동작이 중단됩니다.
targetSdkVeresion ?
애플리케이션 대상 API 레벨을 지정합니다. 설정하지 않을 경우 기본값은 minSdkVersion에 주어진 값과 동일합니다. 이 값은 개발자가 대상 버전을 테스트했고 시스템 향후 앱의 대상 버전과의 호환성을 유지하도록 호환성 동작을 활성화해서는 안됨을 시스템에 알립니다.
안드로이드는 신규 버전에 따라서 몇몇 동작과 심지어 UI까지 변경될 수 있습니다. 그러나 플랫폼의 API 레벨이 앱의 targetSdkVersion 이 선언한 버전보다 높은 경우 시스템은 앱이 예상대로 계속 작동하도록 호환성 동작을 활성화할 수 있습니다.
여기까지 안드로이드 SDK 홈페이지에 기술된 내용을 옮겨보았다.
minSdkVersion은 간단히 말하면, 개발자가 개발한 앱이 구동하기 위한 최소한의 안드로이드 플랫폼 버전이다. 즉, android:minSdkVersion = "19"로 기술되어 있다면, 개발자가 API 19 버전을 기반으로 개발했으므로, 그 이하의 단말에서는 설치할 수 없고 구동할 수도 없다는 것이다.
targetSdkVersion은 기술된 안드로이드 플랫폼 버전까지 해당 앱의 구동을 확인한 것이다. 즉, android:targetSdkVersion = "19"로 기술되어 있다면, 안드로이드 플랫폼 버전 19인 단말에서 정상적으로 구동되었다는 것을 확인하였고, 그 이상 플랫폼 단말에서는 오작동할 수 있으니 하위호환성을 동작하지 못하도록 한다.
개발자는 최신 안드로이드 버전을 확인하고 이후 신규 버전이 나왔을 때, 오작동하지 않도록 targetSdkVersion 값을 기술하여야 한다. 또한 신규 버전이 나왔을 때, 이상 동작 여부를 확인하여 targetSdkVersion 값을 변경해줘야 한다.
참고: https://developer.android.com/guide/topics/manifest/uses-sdk-element.html?hl=ko