2012-03-10 10 views
2

클립 보드 관리자를 사용하는 앱을 만들고 있습니다. 이 작업 방법은 API 레벨 10 이후로 변경되었지만 모든 버전에서 계속 작동하기를 원하기 때문에 가능한 경우 두 API를 모두 사용하고 싶습니다. 다음과 같은 일종의 로직을 코딩하고 싶습니다.Android - 하나의 프로젝트에서 여러 SDK 지원?

if androidVersion < 10 
    use code x 
else 
    use code y 

이게 가능합니까?

Eclipse에서 프로젝트를 만들 때 선택한 최소 SDK 버전에 따라 Android 1.6 jar 파일 또는 Android 3.0 jar 파일이 제공됩니다. 내 질문은 그것이 가능하다면 가져오고 둘 다 사용할 수 있다면 어떻게됩니까? 아니면 단순히 다른 버전의 프로젝트를 만들 필요가 있을까요? 감사.

답변

4

이것이 가능합니까?

확실히. android.os.Build.VERSION을 사용하여 현재 실행중인 버전을 확인하고이를 기반으로 적절한 코드를 사용하십시오.

Android 1.x를 지원하는 경우 이야기가 좀 복잡해집니다.

Eclipse에서 프로젝트를 만들 때 선택한 최소 SDK 버전에 따라 Android 1.6 jar 파일 또는 Android 3.0 jar 파일이 제공됩니다.

아니요. 그것은 당신에게 빌드 타겟을 기반으로 1.6, 3.0 등을 제공합니다. 기본적으로 으로 설정하면 android:minSdkVersion이 일치하지만 변경할 수 있으므로 minSdkVersion은 지원할 가장 오래 걸린 빌드이며 빌드 타겟이 직접 참조하는 API 중 가장 오래된 것입니다.

내 질문에 어떻게 가져오고 사용할 수 있습니까? 그렇다면 어떻게해야합니까?

두 가지를 모두 가져올 필요가 없으며 그렇게 할 수 없습니다.

아니면 다른 버전의 프로젝트를 만들면됩니까?

별도의 버전은 필요하지 않습니다.

+0

고마워요.하지만 클립 보드 처리와 관련해서는 1.6 코드가 사용되지 않으므로 둘 모두 가져와야 할 것으로 보입니다. 따라서 1.6 라이브러리를 사용하면 3.0 용 클립 보드 관리자에 액세스 할 수 없으며 반대의 경우도 마찬가지입니다. 이 두 가지 프로젝트를 만드는 것 외에 다른 방법을 알고 있습니까? – mattboy

+0

위의 의견에 대한 수정. 이제 Android 3+ SDK 용으로 더 이상 사용되지 않는 코드를 실제로 사용할 수 있음을 알았지 만 이는 실제로 좋은 생각입니까? 또한 Android 3+에서 SDK 11에서 소개 된 새로운 OnPrimaryClipChangedListener를 사용하려고합니다.이 경우 새 라이브러리를 가져와야합니다. – mattboy

+0

@mattboy : "안드로이드 3+ SDK에 대해서는 더 이상 사용되지 않는 코드를 사용할 수있게되었지만 실제로는 좋은 생각입니까?" - 당신은 내 답변의 첫 번째 단락에서 이전 장치에 대한 오래된 API 및 최신 API를 최신 장치를 사용하여 기술을 사용할 수 있습니다. "이렇게하면 새 라이브러리를 가져와야 할 것입니다."- ** 빌드 타겟 **을 API 레벨 11로 설정해야합니다. – CommonsWare

관련 문제