Android Support Library


안드로이드 플랫폼의 가장 큰 장점 중 하나는 기기와 수 많은 해상도에 대한 다양성 지원이다. 휴대전화 뿐만아니라 태블릿, 최근들어 시계나 오토등 안드로이드는 모든 용도의 플랫폼으로 사용되고 있다. 숫자적인 측면에서 안드로이드는 가장 성공적인 플랫폼이며 현 지점에서 2만개 이상의 기기들이 안드로이드 플랫폼을 사용하고 있다.

모든 기기를 지원하는 만큼 많은 문제점이 발생될 수 밖에 없다. 가장 큰 문제점은 하위호환성의 문제이다. 모든 기기는 안드로이드 플랫폼의 최상위 버전으로 업데이트 된다는 보장이 없기때문에 몇년전의 안드로이드 버전이나 지금의 최상위 버전에 어떻게 동일한 기능을 작동하느냐가 중요한 문제점이다. 이런 문제점은 개발자로 하여금 가장 피곤하게 하는 문제점으로 지적된다.

 

개발자의 고충을 구글의 안드로이드 팀에서는 하위호환성에 대해 전략적으로 중요하다고 인식했으며 발빠르게 대응하여 라이브러리를 통해 개발자들이 해당 문제점의 해결책을 제시해주었다. 안드로이드 API를 분명히 시간이 지남에 따라 변화할 필요가 있기 때문에 향후, 릴리스된 버전에서 파괴되지 않는 방법을 찾는것은 대단히 어려운 일이다. 이 라이브러리는 안드로이드 팀에 의해 만들어진 가장 중요하고 독특한 디자인중 하나이다.

개발자사이트의 서포트라이브러리 문서를 통해 항상 최신의 라이브러리 정보를 확인 할 수 있다.

 

Android Support Library?
안드로이드 호환성 라이브러리로 2011년에 출시 되었으며, 모든 응용프로그램의 75% 이상 설치되어 가장 널리 사용되는 라이브러리이다. 안드로이드 개발자들은 이러한 사실을 잘 알고 있다. 하지만 이러한 사실은 전체적으로 알고 있는 개발자는 흔하지 않다.

서포트 라이브러리는 단순히 호환성 및 기능으로 분류할 수 있는 라이브러리가 아니다.

각 라이브러리는 minSdkVersion이 프로젝트에 사용하기 위해 식별하는 이름 규칙이 있다. 더 높은 버전은 이전 버전의 기능이 포함되어 있다고 생각하는 것이 자연스러우나 이는 조금 혼란할 수 있다. 예를 들면 V7-AppCompat가 항상 Android API Level 4에 모든 기능이 포함될 수 있다고 생각하지만 이는 부정확하다. 서포트 라이브러리의 버전은 minSdkVersion이므로 최소지원 될수 있는 버전을 나타내는것을 의미한다.

Support Library

이전 안드로이드 버전을 사용하고 있는 기기에서 새로운 API를 사용 할수 있도록 도와주는 호환성 라이브러리이며 새로운 안드로이드 버전이 나올때 마다 업데이트 된다. 주요 호환성 라이브러리로는 V4및 V7-AppCompat이 있다.

V4
안드로이드 API4부터 사용이 가능한 라이브러리로 API 11에서 소개된 Fragment와 Loader등 주요 클래스의 구현을 지원하며 ViewPager, DrawerLayout등 포함 되어 있다.

V7-AppCompat
V4를 이용하여 확장한 라이브러리로 단순히 액션바(API 11), 툴바(API 21)등을 지원한다.

이러한 서포트 라이브러리는 기본 SDK에서 제공하는 것과 대부분 동일하나 약간의 차이나 기능 축소가 있을 수 있다. 또한 기본 SDK와 라이브러리는 완전히 다르게 분리 시켰기 때문에 사용시 일관성이 떨어 질 수 있다. 예를 들어 기본 SDK에서는 Fragment가 Activity 클래스에서 지원되나 서포트 라이브러리에서 Fragment를 사용하기위해 FragmentSupport라이브러리를 사용해야만 한다. 이러한 일관성의 문제점을 해결 하기위해 구글에서도 상당한 노력을 하고 있다. 예를 들어 안드로이드 스튜디오의 새로운 프로젝트 템플릿을 보면 V7-AppCompat와 V4라이브러리를 기본적으로 포함시켜 개발자로 하여금 의존할 수 있도록 노력하고있다. 즉, 서포트 라이브러리가 필요 하지 않는 경우라도 일반적으로 사용하기를 구글에서는 권하고 있다.

기능의 라이브러리

호환성 라이브러리 뿐만 아니라 SDK의 일부가 아닌 기능을 추가하기위한 라이브러리다 이 자체에 포함된 라이브러리는 SDK에 대한 의존성이 전혀 걱정 없이 프로젝트에 추가/삭제 될 수 있다.

V7-recyclerview: 효율적으로 표시하고 대량의 데이터와 애니메이션을 제공하는 ListView를 대체하기위해 설계된 View
V7-cardview: 카드 UI 디자인 패턴의 View
V7-GridLayout: 사각형 격자로 UI를 구성할 수 있는 Layout
V7-mediarouter: 구글 카스트 지원을 위한 MediaRouter
V7-palette: 이미지의 색상 추출

디자인 라이브러리

롤리팝 발표시 머트리얼 디자인 가이드 라인이 발표 되었으며 2015년 Google I/O를 통해 가이드라인의 디자인을 실제 구현할 수 있게 도와주는 라이브러리이다. 여기에는 FloatingActionButton, NavigationView, CoordinatorLayout등 다양항 View들이 있다.

기타 라이브러리

안드로이드 서포트 라이브러리중 좀 자주 사용하지는 않지만 그래도 사용할만한 몇몇 가지 라이브러리가 있다.
V8: RenderScript(API 11)제공
V13: Fragment UI에 대한 추가적인 지원
V17: TV UI에 대한 지원
multidex: 다중 dex파일에 대한 지원
annotations: @NonNull, @IntDef등 주석에 대한 지원