사진출처 : http://www.flickr.com/photos/intr/3488416260/
안드로이드 1.5가 정식으로 릴리즈되면서 하위 호환성에 대한 고민이 필요하게 되었다.
안드로이드 개발자 블로그의 최근 포스트
"Backward compatibility for Android applications" 에는 이러한 고민에 대처하는 몇 가지 방법을 알려준다.
우선 안드로이드 1.5가 제공하는 새 기능을 적용한 어플리케이션이라면 다음 두 가지 상황에서 고민해야 한다.
- 1.5 이상의 기기에서만 작동하게 하느냐
- 1.5 API의 기능은 사용하지 못하게 하더라도 일단 작동하게 해 주느냐
1번 상황이라면 얘기는 간단해진다.
안드로이드 어플리케이션의 실행 정보를 담고 있는 AndroidManifest.xml 에 아래와 같이 최하 SDK 버전을 명시해 주면 된다.
이 한줄의 xml 코드는 어플리케이션이 안드로이드 1.5 보다 낮은 버전의 장치에 설치되는 것을 막아준다.
<uses-sdk android:minSdkVersion="3" />
그러나 1.5의 새 기능이 있으면 좋기는 하나 꼭 필요한 것이 아닐 경우엔 조금 복잡해진다.
위 포스트는 두 가지 회피 방안(하위 버전에서도 오류 없이 실행 가능하도록 하는)을 제시하고 있다.
Refrection을 사용하는 것
: 이 아이디어는 Method 오브젝트를 이용하여 안드로이드 1.5의 새 기능을 룩업하여 해당 메소드가 있는지 확인하는 방법이다. 해당 메소드가 없다면 NoSuchMethodException 으로 감지할 수 있을 것이다.
Wrapper Class를 만들어 사용하는 것
: 1.5의 API를 직접 호출하지 않고 Wrapper Class로 둘러싼 다음, Wrapper Class에서 API를 검증, 그에 맞는 처리를 하는 방법이다.
자세한 사례와 코드는 해당 포스트
"Backward compatibility for Android applications" 를 참조하면 된다.
전해지는 소식에 의하면 안드로이드 하위 호환성에 관한 주제가
5월 열리게 될 Google IO 행사에서도 다뤄질 예정이라 한다.
새로운 뭔가를 얻으려면 약간의 희생이 필요한가보다.