Android App을 만들다가 다음과 같은 경고 메시지를 보게 됐다.
클래스 이름에 줄이 그어지고 해당 블럭은 노란색으로 변해버렸는데...
경고 메시지를 읽어보니 해당 클래스는 "deprecated" 되었단다.
중요도가 떨어져 더 이상 사용되지 않고 앞으로는 사라지게 될 (컴퓨터 시스템 기능 등)
Deprecation
각 출시에서 특정 Android API는 더 이상 사용되지 않거나 더 나은 개발자 환경 제공이나 새 플랫폼 기능 지원을 위해 리팩터링해야 할 수 있습니다. 이 경우 Android는 더 이상 사용되지 않는 API를 공식적으로 지원 중단하고 개발자에게 대신 사용할 새 API를 안내합니다.
지원 중단이란 API에 관한 공식 지원은 종료되나 개발자는 계속 사용할 수 있다는 의미입니다.
지원되는 API 레벨의 안드로이드 버전까지는 사용이 가능하다는 말인데, 그건 어디서 확인할까? 예를 들어, 위에서 사용된 AsyncTask 클래스를 Android Developers 사이트에서 검색해보면 친절하게 API 30까지 사용 가능하다고 알려준다.
아래에는 대신 사용하길 권장하는 클래스도 알려준다. 여기서는 Java로 작성했으니까 Kotlin concurrency utilities 말고 java.util.concurrent를 사용해야겠네.
그럼 현재 프로젝트의 API 레벨이 몇인지는 어떻게 확인할 수 있을까?
~ Sdk로 끝나는 세 개의 키워드가 보인다. 하나씩 살펴보자.
Android SDK 버전 속성 - 공식문서의 설명은 조금 어려워서 구글링을 더 해봤다.
Compile할 때, 사용하는 버전. 해당 버전에 맞춰 검색하며 컴파일이 이뤄진다.
앱이 돌아갈 수 있는 최소한의 버전. 보통, 프로젝트를 생성할 때 선택한다.
테스트가 완료된, 최적화된 버전
compileSdk와 targetSdk가 32로 설정되어 있기 때문에, API 30까지 지원되는 AsyncTask 클래스는 Deprecated 경고 메시지가 떴던 것이다!