2

내 앱이 API 레벨 7 이상을 타겟팅해야하지만 가능하면 최신 릴리스의 기능을 선택적으로 사용하고 싶습니다. 예를 들어, 나는 다음과 같은 코드가있을 수 있습니다 :이클립스에서 오래된 안드로이드 버전을 지원하는 방법

if (Build.VERSION.SDK_INT >= 8) { 
    base64String = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT); 
} else { 
    base64String = MyCustomBase64.encodeBytes(bytes); 
} 

을 그러나, 나는 (API 7) "안드로이드 2.1"을 대상으로 이클립스에서 프로젝트를 구성 할 때 클래스 android.util.Base64이 있기 때문에 발견되지 않은 경우에만 API 8 이상에 존재합니다. 그런 다음 Eclipse는 클래스가 빌드 경로에 있지 않으므로 해당 라인을 컴파일 오류 (빨간색 "x")로 지정합니다.

내 질문 : Eclipse를 사용하여 Android 개발을 수행 할 때 이러한 종류의 개발 (실제로 대상 환경에 존재하지 않는 기능 지원)을 처리하는 "적절한"방법은 무엇입니까?

Eclipse에서 대상을 항상 2.2 (API 8)로 변경할 수는 있지만 이상적은 아닙니다. 그것은 무의식적으로 8+ 만 존재하고 이클립스가 그 사실을 알리지 않는 기능을 사용하는 상황을 만든다.

+0

MyCustomBase64는 무엇입니까? 나는 같은 문제를 가지고있다 ... – bersam

답변

1

고객님의 질문에 답변하셨습니다.

난 항상 그것을 수행하는 방법을 2.2 (API 8)

에 이클립스에서 대상을 변경할 수 있습니다. 그래도 매니페스트의 minSDK/targetSDK를 7로 설정할 수 있습니다. AFAIK를 사용하면 더 높은 API 수준의 코드를 둘러 본 것처럼 if 문을 사용해야 할 것입니다.

+0

if 문을 가진 미래 API 레벨의 주변 코드는 프로젝트 타겟이 2.1로 설정되었을 때 컴파일 에러로 나타나지 않도록하지 않는다. 이 문서는 선호하는 방법을 설명하는 것으로 보입니다. http://tools.android.com/recent/lintapicheck – jph

+0

그러나 버그가있는 것 같습니다. 내 코드에서 String.isEmpty()를 사용했지만 대상 API가 9이고 min 수준이 7 (매니페스트)이고 린트 검사기로 오류로 표시되지 않았습니다. 그랬을거야. – jph

+0

hmm 보풀이 보이기 전에 보푸라기 도구로 놀지 않았습니까? API 7로 작성했지만 API 8의 기능을 사용하려면 컴파일 오류를 방지 할 수있는 방법이 없다고 생각합니다. 유일한 옵션은 상위 레벨 API로 프로젝트를 빌드하는 것입니다. – FoamyGuy

관련 문제