현재(2010.09.15) 국내에 XPERIA 사용자가 꽤 많은것으로 알고 있습니다. 펌웨어 업데이트를 통해서 2.1 이상의 버전을 지원할 것이라곤 하지만 대부분의 사용자는 당분간 1.6 버전을 그대로 할것으로 생각됩니다. 말씀하신대로 특별한 버전상의 기술 업그레이드가 필요 없는 경우라면 저는 무조건 낮은 버전의 SDK를 사용할 것을 권하고 싶습니다. 특히 해외의 경우엔 낮은 버전의 기기 사용자들이 생각외로 많습니다. 문제는 버전상의 기술 업그레이드로 인한 구현상의 문제입니다. 아시겠지만 1.6버전은 멀티 터치를 지원하지 않습니다. 예를 들어 이미지뷰어를 제작할 경우 1.6 사용자를 고려해서 확대/축소 버튼을 따로 구현하셔야 합니다. 저 같은 경우는 1.6 버전 사용자를 고려하여 아래와 같이 작업을 했습니다.
1. 최신버전의 SDK를 선택하여 개발합니다. (빌드시 에러가 없어야겠죠?) 2. 지원하고자하는 최소버전의 SDK를 선택합니다. (이클립스에서 프로젝트 속성에 가시면 SDK를 선택할 수 있습니다.) 3. 이때 빌드에러가 날 것입니다. 예를들어서 1.6버전엔 onBackPressed() 핸들러 함수가 없습니다. 또한 멀티터치 관련 함수도 에러가 나죠. 지원하지 않는 함수는 직접 구현을 하셔야 합니다. 중요한것은 지원하지 않은 함수를 호출하는 Activity의 생성입니다. 즉, Activity 생성시에 예외가 발생합니다. Build.VERSION.SDK_INT 값을 이용하셔서 동적으로 기기의 SDK를 확인하시어 해당하는 Activity를 생성하시면 됩니다. 대략적으로 아래와 같은 코딩이 될 것입니다. Intent it = null; if (Build.VERSION.SDK_INT >= 7) { // 2.1버전 API LEVEL은 7 입니다. it = new Intent(context, ActivityForEclare.class); // 2.1버전 이상으로 구현된 Activity } else { it = new Intent(context, ActivityForLegacy.class); // 2.1버전 이하로 구현된 Activity } startActivity(it);
4. AndroidManifest.xml 파일의 최소 SDK 버전을 설정합니다. 만약 1.6 버전 이상에서 동작한다면 아래와 같이 수정해 주시면 됩니다. <uses-sdk android:minSdkVersion="4" /> 5. 마지막으로, 프로젝트 SDK 버전을 다시 최신버전의 SDK로 수정합니다.
위와 같이 처리하시면 이전버전의 기기에서는 직접 구현한 기능으로 처리가 가능하며, 최신 버전의 기기에서는 멀티터치 및 기타 최신 기능을 그대로 이용하실 수가 있습니다.
2010.09.16 15:15:04
이주희사랑
역시 그렇군요,,좋은 말씀 감사합니다. 티스토어에 올린것이 장사가 하도 안되서 고민중입니다. 소비층을 확대라도 해야 할 것 같아서요..그런데 희한한 것은 조회도 별로 던데...그 만큼 소비자 확대도 안되나 봅니다..신규가 생기면 자동으로 늘어날텐데..어찌 국내 최고 마켓이란 바닥이 제 블로그 조회수 보다 작네요..제 블로그는 매일 백명 이상은 오는데...
현재(2010.09.15) 국내에 XPERIA 사용자가 꽤 많은것으로 알고 있습니다. 펌웨어 업데이트를 통해서 2.1 이상의 버전을 지원할 것이라곤 하지만 대부분의 사용자는 당분간 1.6 버전을 그대로 할것으로 생각됩니다. 말씀하신대로 특별한 버전상의 기술 업그레이드가 필요 없는 경우라면 저는 무조건 낮은 버전의 SDK를 사용할 것을 권하고 싶습니다. 특히 해외의 경우엔 낮은 버전의 기기 사용자들이 생각외로 많습니다. 문제는 버전상의 기술 업그레이드로 인한 구현상의 문제입니다. 아시겠지만 1.6버전은 멀티 터치를 지원하지 않습니다. 예를 들어 이미지뷰어를 제작할 경우 1.6 사용자를 고려해서 확대/축소 버튼을 따로 구현하셔야 합니다. 저 같은 경우는 1.6 버전 사용자를 고려하여 아래와 같이 작업을 했습니다.
1. 최신버전의 SDK를 선택하여 개발합니다. (빌드시 에러가 없어야겠죠?)
2. 지원하고자하는 최소버전의 SDK를 선택합니다. (이클립스에서 프로젝트 속성에 가시면 SDK를 선택할 수 있습니다.)
3. 이때 빌드에러가 날 것입니다. 예를들어서 1.6버전엔 onBackPressed() 핸들러 함수가 없습니다. 또한 멀티터치 관련 함수도 에러가 나죠.
지원하지 않는 함수는 직접 구현을 하셔야 합니다. 중요한것은 지원하지 않은 함수를 호출하는 Activity의 생성입니다.
즉, Activity 생성시에 예외가 발생합니다. Build.VERSION.SDK_INT 값을 이용하셔서 동적으로 기기의 SDK를
확인하시어 해당하는 Activity를 생성하시면 됩니다. 대략적으로 아래와 같은 코딩이 될 것입니다.
Intent it = null;
if (Build.VERSION.SDK_INT >= 7) { // 2.1버전 API LEVEL은 7 입니다.
it = new Intent(context, ActivityForEclare.class); // 2.1버전 이상으로 구현된 Activity
} else {
it = new Intent(context, ActivityForLegacy.class); // 2.1버전 이하로 구현된 Activity
} startActivity(it);
4. AndroidManifest.xml 파일의 최소 SDK 버전을 설정합니다. 만약 1.6 버전 이상에서 동작한다면
아래와 같이 수정해 주시면 됩니다.
<uses-sdk android:minSdkVersion="4" />
5. 마지막으로, 프로젝트 SDK 버전을 다시 최신버전의 SDK로 수정합니다.
위와 같이 처리하시면 이전버전의 기기에서는 직접 구현한 기능으로 처리가 가능하며, 최신 버전의 기기에서는
멀티터치 및 기타 최신 기능을 그대로 이용하실 수가 있습니다.