2012-07-18 3 views
2

DataDroid 라이브러리가 엉망이되어 새로운 린트 체크가 Android SDK에 이상한 버그를 드러냈습니다. DataDroid을 모르는 사람들을 위해 AndroidHttpClient의 이상한 최소 API 레벨

, 그것은 로컬 및 원격 데이터 관리 (여기에서 확인할 대한 추가 정보 : http://datadroid.foxykeep.com)에 대한 라이브러리의

라이브러리에서 웹 서비스를 호출하기 위해, 나는 연결을 만들기 위해 클래스 AndroidHttpClient를 사용 내 NetworkConnection 클래스의 서버에. 내 라이브러리는 Android 1.6 이상 버전에서 사용할 수 있으며 1.6 휴대 전화에서도 문제가 없었습니다.

이상한 점은 SDK 설명서에서 AndroidHttpClient이 API 2.2 이상에서만 사용 가능하다는 것입니다. 나는 새로운 린트 체크 "NewApi"를 통해 minSdkVersion이 충분히 높지 않다는 오류를 발견했다.

Android의 소스 코드를 살펴본 결과,이 클래스가 이미 1.6에 존재하고 비공개가 아니라는 것을 알았습니다. 그래서이 클래스의 min API 레벨에있는 버그가 문서에 있다고 생각합니다 ... 4 (어쩌면 더 낮지 만 확인하지는 않았습니다)

유일한 문제는이 위치가 어디인지 모르겠다는 것입니다. 정보가 저장되어 있으므로 문제를 해결할 패치를 만들 수 없습니다.

+0

이것은 실제로 해결책은 아니지만 확실하게 작동하고 오류가 사라지 길 원한다면 새로운 ADT는 @TargetApi (8)를 사용하여 검사를 억제하는 주석을 제공합니다. 클래스에 오류가 발생했습니다. – alexc

+0

@Foxykeep 나에게 안드로이드 1.6 소스 코드의 링크를 주시겠습니까 안드로이드 HTTP 클라이언트가 존재 했습니까? 확인했지만 아무 것도 볼 수 없습니다. – R4j

+0

@alexc : 프로젝트 용으로 사용하는 솔루션이지만 다른 사람들은 자신의 프로젝트에 대해 나와 같은 문제가있을 수 있습니다 ... SDF 수정이 더 좋을 것입니다 :) – Foxykeep

답변

3

클래스가 잠시 동안 있었지만 공개가 아니기 때문에 특정 빌드가이를 제외하고 프로그램이 실패 할 수 있습니다. . 이것은 버그가 아니며 다른 클래스가 숨겨져 있지는 않지만 이유가 있거나 아직 공개되지 않은 클래스가 있습니다.

+0

[변경 내역] (https://github.com/android)에 따르면 /html/http/AndroidHttpClient.java), @hide가 [2010 년 2 월 25 일 - android-common을 다시 정렬하여 프레임 워크가 더 이상 그와 연결되지 않으므로] 제거되었습니다 (https : //platform_frameworks_base/commits/master/core/java/android/net/http/AndroidHttpClient.java). //github.com/android/platform_frameworks_base/commit/2269d1572e5fcfb725ea55f5764d8c3280d69f6d). – yorkw

+0

OK 그래서 그것은 숨겨졌지만 여전히 대부분의 SDK에서 사용할 수 있습니다. 그럼 내가 8 이하 API를 위해 다른 것을 사용하도록 바꿀거야. – Foxykeep

관련 문제