지난 글에서 앱의 targetSdk 버전에 따라 동작이 달라진다는 내용을 살펴보았다. 안드로이드를 이렇게 만든 이유는 이 글에, 차이점은 안드로이드 API 공식 문서인 이 글에 잘 정리되어 있다.
안드로이드에서 호환성 동작(compatibility)라 부르는 이런 차이 점을 여기서는 앱 사용에 영향을 많이 미치는 대표적인 것들만 추려 설명한다.
API 9
메인 스레드에서도 네트워크 통신을 할 수 있었다. API 10 이상부터는 메인 스레드에서 네트워크 통신을 시도하면, 앱이 종료된다. 하지만, TargetSdkVersion을 9로 적는다면 앱이 종료되지 않는다.
안드로이드의 기본 테마가 API 11부터 홀로(Holo) 테마로 바뀌었다. 사용자가 TargetSdkVersion을 10으로 적는다면, 11이상의 단말에서 앱이 실행되더라도 11의 기본 테마인 홀로(Holo)가 아닌 투박한 10 미만에서 지원하던 테마로 앱을 실행한다.
API23
Runtime 퍼미션이 추가되었고, targetSdk가 API22 미만인 앱은 아래와 같은 경고가 뜬다.
API24
정적 브로드캐스트 리시버로는 CONNECTIVITY_ACTION 브로드캐스트를 받을 수 없다. 안드로이드에서는 JobScheduler를 이용해 업데이트와 같은 백그라운드 작업을 처리하도록 강제하고 있다.
시스템 기본 테마의 색상 구성이 밝은 색으로 변경되었다.
API26
투명 액티비티의 orientation 고정을 한 후, API26인 단말에서 실행 시 IllegalStateException이 발생한다. (참고로 API25이하/API27이상 단말에서는 발생하지 않는다.)
참조
핑백: minSdkVersion, targetSdkVersion 그리고 maxSdkVersion – Dog발자