2010-05-26 3 views
7

프로그래밍을 위해 Android 1.5 만 사용하는 프로젝트가 있지만 Android 2.2의 다른 핸드셋 및 멋진 기능이 확산되면서 1.5에 대한 지원을 잃지 않고 새로운 코드 기반을 포기하지 않고 기능을 지원하고 싶습니다. Android SDK로 할 수 있습니까?minSDK 버전을 3으로 유지하면서 Android 2.1/2.2에서 기능을 사용하는 방법이 있습니까?

동일한 코드베이스를 유지하는 것과 같이 "못생긴"방법을 사용하지만 플랫폼에 따라 다른 버전을 빌드하고 다른 Java 파일을 보관하는 시스템을 구축하는 것이 좋습니다. 어떤 버전이 선택되었는지에 따라 빌드의 다른 Android 버전에서 실행되는 여러 버전의 앱을 기반으로 다른 사람이 문제를 해결하기를 바랍니다.

+0

중복 된 http://stackoverflow.com/questions/4968988/what-if-i-want-to-release-an-update-with-highher-minsdk-than-the-one-on-the- market/4969477 # 4969477 – rds

답변

6
우리가 1.5 새로운 코드 기반을 분기에 대한 지원을 잃지 않고 기능 를 지원하고 싶습니다

. Android SDK로 을 (를) 할 수 있습니까?

확실히. 이 기술은 약 10 년 정도되었습니다.

옵션 # 1 : 런타임에 새로운 클래스 (또는 기존 클래스의 새 메소드)에 액세스하려면 리플렉션을 사용하십시오. See here for an example.

옵션 # 2 : 인터페이스와 두 개의 구현 (이전 API의 경우 하나, 최신 API의 경우 하나)을 생성하고 런타임에 올바른 구현을로드하여 조건부 클래스로드를 사용합니다. 새로운 구현체는 구형 디바이스에로드되지 않기 때문에, 새로운 구현체가 이전 디바이스가 가지고 있지 않은 클래스 나 메소드를 사용한다는 사실은 문제가되지 않습니다. See here for an example.

+2

XML 속성의 경우 자유롭게 사용할 수 있으며 이전 버전의 플랫폼에서는 무시할 수 있습니다. 예를 들어, 2.2 SDK와 비교하여 SD 카드에 설치할 수 있다고 말하기 위해 새로운 속성을 사용하면 앱은 다른 작업을 수행하지 않고 이전 플랫폼에서 계속 실행됩니다. – hackbod

+0

Commonsware, 다른 예인 PickDemo.java는 API 4 이상의 API에서 연락처를 표시하는 데 더 도움이됩니다. – Yar

+0

@ Yar : 2010 년 3 월에 'PickDemo'가 존재하지 않는다고 생각합니다. :-) 어쨌든 링크는 다음과 같습니다. https://github.com/commonsguy/cw-omnibus/tree/master/Contacts/Pick – CommonsWare

관련 문제