2014-12-02 5 views
-1

에 대한 최소한의 버전 확인, 내가 좋아하는 라이브러리를 사용 appcompat_xxx 또는 지원 라이브러리가 실제로 지원할 수있는 Android의 가장 오래된 버전입니다. 이 정보는 어디에서 찾을 수 있습니까?지원 라이브러리

답변

2

이름이 모두 같습니다. appcompat_v7은 API 7 이상을 지원하고 support_v4은 API 4 이상을 지원합니다.

또한 명확하게 예를 들어, 각 라이브러리의 문서에 명시된 것 :

이 라이브러리는 안드로이드 1.6 (API 레벨 4) 이상에서 사용하도록 설계되었습니다. 또한 http://developer.android.com/tools/support-library/features.html#v4

이 항상 필요하지 않지만, 라이브러리의 각 버전으로 targetSdkVersion을 일치하도록 시도해야합니다. 예를 들어 targetSdkVersion이 19 인 경우 com.android.support:appcompat-v7:19.+

분명해야합니다. 지원 라이브러리는 이름에 명시된대로 최소 API 수준을 지원하도록 설계되었습니다. 의미 - API 레벨을 실행하는 기기는 물론 나중에 API 레벨의 기기에서도 안전하게 사용할 수 있습니다. 도넛 형 기기 (API 레벨 4)에서 appcompat_v7을 사용하거나 Jellybean 4.1 기기 (API 레벨 16)에서 leanback-v17 라이브러리를 사용하려고 시도하면 앱이 과 같이 ClassNotFoundException과 같이 무너질 가능성이 있습니다 ().

라이브러리는 원래 이전 API 수준에 새로운 API 수준의 기능을 제공하기 때문에 거의 동일한 코드를 작성하고 이전 및 새로운 장치를 지원하는 단일 APK에 최신 플랫폼 패러다임을 활용할 수 있습니다.

조각은 완벽한 예입니다. Fragment 클래스는 Honeycomb (API 레벨 11)과 함께 도입되었습니다. 그런 다음 Google은 Fragment 클래스의 백 포트 버전을 포함하는 support_v4 라이브러리를 출시했으며 해당 API를 제공합니다. 다시으로 지정되어있는 으로이 라이브러리를 API 4까지 지원하는 앱에서 안전하게 사용할 수 있습니다. API 3 기기에서 v4 라이브러리를 사용하여 앱을 설치하면 충돌이 발생합니다. 예를 들어 API 8 장치에 설치하면 의도 한대로 작동합니다.

아마도 min sdk 버전을 지정하기 위해 파일 이름에 의존하는 겉으로보기에는 섬세한 특성에 휩싸여있을 것입니다. 이제는 약간의 추측이지만 v4 라이브러리가 처음 소개되었을 때 .jar 파일 즉, minSdkVersion이 무엇이든 상관없이 앱의 클래스 패스에 추가 할 수 있으며, 불평하지 않고 컴파일 할 수 있습니다. MY Google은 초기 SDK 버전을 지원하기위한 앱에서 개발자가 사용하려고하지 않도록 최소 SDK 버전을 사용하여 명시 적으로 라이브러리 이름을 지정하려고했습니다. 다시 매우 명시 적으로 대답하는 자신의 문서 외에도 파일 이름은 아마도 문서를 읽지 않는 개발자를 돕는 위험 완화 방법이었을 것입니다.

2014 년으로 빨리 감기, 많은 라이브러리 중 하나가 .aar 파일 (Gradle을 통해) 형식으로 제공되거나 프로젝트로 가져와야합니다.이는 현재이 라이브러리에 이미지 및 테마와 같은 리소스가 포함되어 있기 때문에 .jar 파일에 패키지화 할 수 없기 때문입니다. 여기에 추가 된 이점은 Google이 minSdkVersion을 지정하는 라이브러리에 AndroidManifest.xml을 포함시킬 수 있다는 것입니다. 컴파일 시간에 minSdkVersion이 포함 된 라이브러리 프로젝트에 지정된 minSdkVersion보다 낮은 경우 빌드 도구의 매니페스트 합병이 불만을 제기합니다.

+0

API 수준과 파일 이름에 지정된 버전 번호 사이에는 명확한 상관 관계가 없습니다. 특히 여러 버전의 Android가있는 경우 이러한 호환성 파일 중 일부만 있다고 생각하면 분명합니다. – AndroidDev

+1

응? "v4"와 "API 버전 4"간의 상관 관계를 놓칠 수있는 방법이 확실하지 않습니다 ... 수식은 "libraryname_minSdkLevel"입니다. 여기서 minSdkLevel은 지정된 라이브러리가 지정된 것보다 크거나 같은 API 수준에서 사용할 수 있음을 의미합니다. . –

+0

그것은 오히려 자유주의 가정입니다. Google이 새로운 운영 체제를 최신 지원 라이브러리와 함께 출시하면 기본 지원은 이전 지원 라이브러리가 수행하는 모든 작업을 지원한다는 것입니다. 사실 이전 버전과 최신 버전을 모두 포함 시키려고하면 빌드 도구는 더 새로운 버전 만 선택합니다. 이는 최신 버전이 이전 버전을 지원함을 분명히 나타냅니다. 문제는 여전히 남아 있습니다. 새로운 버전은 어느 정도 뒤로 이동합니까? 그래서 당신은 틀렸어. 특정 버전 이상은 지원하지 않습니다. 개발 된 버전과 이후 버전을 지원합니다. – AndroidDev

관련 문제