본문 바로가기

Dev Workbooks/Dev for Fun

[Android 1.5] 안드로이드 어플리케이션 하위 호환성 확보

사진출처 : http://www.flickr.com/photos/intr/3488416260/


그간 안드로이드 기기래봤자 HTC G1 밖에 없었으니 API 맞춰 만들기만 하면 됐겠지만,
안드로이드 1.5가 정식으로 릴리즈되면서 하위 호환성에 대한 고민이 필요하게 되었다.

안드로이드 개발자 블로그의 최근 포스트
"Backward compatibility for Android applications" 에는 이러한 고민에 대처하는 몇 가지 방법을 알려준다.

우선 안드로이드 1.5가 제공하는 새 기능을 적용한 어플리케이션이라면 다음 두 가지 상황에서 고민해야 한다.
  1. 1.5 이상의 기기에서만 작동하게 하느냐
  2. 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를 검증, 그에 맞는 처리를 하는 방법이다.

자세한 사례와 코드는 해당 포스트

전해지는 소식에 의하면 안드로이드 하위 호환성에 관한 주제가
5월 열리게 될  Google IO 행사에서도 다뤄질 예정이라 한다.
새로운 뭔가를 얻으려면 약간의 희생이 필요한가보다.