Support Library

지원 라이브러리

안드로이드가 발전함에 따라 보안, 정책등의 이유로 함수들은 계속해서 변합니다.

모든 개발자가 이러한 내역들을 잘 인지하여 안드로이드 버전에 따라 처리를 할 수 있다면 이상적이지만, 현실적으로 이는 당연히 불가능합니다.

이에 구글은 알아서 안드로이드 버전에 대응하여 필요한 형태로 리턴하도록 "지원 라이브러리"의 형태로 지원하고 있습니다. 😎

지원 라이브러리는 이제는 AndroidX에 병합되었지만 그 기능은 그대로 유지하고 있습니다.

사용 방법

기존에는 사용하기 위해 지원 라이브러리를 gradle에 추가해주어야 했으나, 지원 라이브러리가 AndroidX로 편입되며 Android Jetpack에 통합되었습니다.

Jetpack에 통합되었기에, 현재는 새로운 프로젝트를 생성하면 AndroidX를 기본으로 사용하도록 설정되어 있습니다. 😊

그럼에도 불구하고, 기존 support Library를 사용하는 프로젝트는 AndroidX로 이전 을 참고하여 개발을 진행할 수 있습니다.

사용 예시

예를 들어, Context 내의 getSystemService는 Android 23 이상에서는 serviceClass: Class<T>를 필요로 하지만, 미만에서는 serviceName: String을 필요로 합니다.

이에 대해 ContextCompat.java라는 지원 라이브러리에서는 아래와 같은 형태로 대응합니다.

@Nullable
public static <T> T getSystemService(@NonNull Context context, @NonNull Class<T> serviceClass) {
    if (Build.VERSION.SDK_INT >= 23) {
        return context.getSystemService(serviceClass);
    }
    String serviceName = getSystemServiceName(context, serviceClass);
    return serviceName != null ? (T) context.getSystemService(serviceName) : null;
}

덕분에, 개발자는 따로 버전에 따른 핸들링을 하지 않고 해당 지원 라이브러리의 함수를 사용하는 것으로 개발을 지속해 나갈 수 있습니다.

사용할 수 있는 모든 메서드는 Android Developers - CompatContext 에서 확인할 수 있습니다.

참고로 저는 주로 Color, Drawable, Permission Check 등을 사용합니다. 😉

좋은 웹페이지 즐겨찾기