안드로이드의 상위 호환성

지난 글에서 AndroidManifest.xml의 SdkVersion에 대해 이야기 했다. 안드로이드 개발자 사이트에서 이 SdkVersion들에 대한 글을 읽다 보면  이런 말이 나온다.

Android applications are generally forward-compatible with new versions of the Android platform.

라고 나와있다.  상위호환성이 뭔가?

상위호환성을 이해하기 위해 하위호환성을 먼저 살펴보자.  위키피디아(영문)에 따르면 이전 버전에서 만든 입력값을 처리할 수 있다면 ‘하위 호환성’이 있다고 한다. 자바를 예로 들면, 라이브러리만 예전 버전에서 새버전으로 바꾸었는데 여전이 어플리케이션이 잘 동작한다면 하위 호환성이 있는 라이브러리이다. 예를 들어, 진저브레드에서 만들어진 함수를 아이스크림 샌드위치를 내놓을 때 더이상 쓰지 말라고 권유하는 경우가 있다. 하지만, 이를 삭제하지 않고 deprecated 처리하여 하위호환성을 보장해주고 더 좋은 방법으로 구현한 메소드도 추가한다.

그리고 상위호환성은 하위호환성의 반댓말이다. 그럼  최신 버전의 라이브러리로 제작한 어플리케이션이 하위 버전 라이브로리로 바꾸었는데도 잘 동작한다면 하위 호환성이 있다는 뜻인건가?

그건 아니다. 예전 기준으로 만들었던 제품이 변경된 기준에서도 잘 동작하도록 하는 표준이 있다면, 상위 호환성이 있다고 본다. 예를 들어, 핀치 투 줌 기능이 없을 때 만든 앱이라도, 표준 api를 이용하여 만든 앱이라면 최신 단말에서 앱을 실행할 때 핀치 투 줌 기능을 사용자가 사용할 수 있는 경우다. 보통 상위 호환성은 제한된 시나리오에서만 가능하다.

상위호환성이라는 컨셉은 소프트웨어 분야에만 국한된 것은아니다. 전자제품 인터페이스나 전신 신호, 파일 시스템, 프로토콜 등에 모두 적용될 수 있다.

상위호환성을 고려해야하는 이유는 사용하는 단말의 동작(가시적/비가시적 모두)들은 한번 익숙해지면 바꾸기 쉽지 않다. 만약 사용자가 이전 버전에서 만든 앱을 사용하는데, 이 앱이 새 프레임워크와 다르게  동작하면 만족감이 떨어질 것이다. 그렇다고 새 프레임워크가 나올 때마다 앱 개발자가 일일이 확인/수정/릴리즈를 반복해야 한다면 안드로이드 자체의 인기가 떨어질 것이다.(물론 구글은 이걸 권장한다) 이에 구글에서 상위 호환성을 지원함으로서 개발자에 대한 인기와 사용자에 대한 일관성을 지키기 위해 상위 호환성을 지원하게 되었다고 생각한다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.