여기 에서 언급했듯이 Android M은 Apache HTTP API를 지원하지 않습니다. 문서 상태 :
대신 HttpURLConnection 클래스를 사용하십시오.
또는
Apache HTTP API를 계속 사용하려면 먼저 build.gradle 파일에서 다음 컴파일 시간 종속성을 선언해야합니다.
android {useLibrary ‘org.apache.http.legacy’}
나는 그러나, 나는 아직도, HttpURLConnection의에 HttpClient를 내 프로젝트의 사용의 변환 다량이 필요 HttpClient를 몇 지역에서 사용할 수 있습니다. 따라서 ‘org.apache.http.legacy’를 컴파일 타임 종속성으로 선언하려고하지만 build.gradle에서 오류가 발생합니다.
Gradle DSL 메서드를 찾을 수 없음 : ‘useLibrary ()’
내 질문은 : 어떻게 ‘org.apache.http.legacy’를 프로젝트에서 컴파일 타임 종속성으로 선언합니까?
어떤 도움이라도 대단히 감사합니다. 감사
답변
API 23의 경우 :
최상위 수준 build.gradle-/build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
...
모듈 별 build.gradle-/app/build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
...
}
공식 문서 (미리보기 용) : http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
최신 Android Gradle 플러그인 변경 로그 : http://tools.android.com/tech-docs/new-build-system
답변
또 다른 대안은 jbundle 종속성을 추가하는 것입니다. Android Studio는 “cannot resolve symbol …”이라는 메시지를 표시하지 않으므로 Android Studio에 더 친숙합니다.
dependencies {
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
답변
Android 9 (Pie)에 대한 참고 사항입니다.
또한 useLibrary 'org.apache.http.legacy'
AndroidManifest.xml에 추가해야합니다.
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
출처 : https://developer.android.com/about/versions/pie/android-9.0-changes-28
답변
build.gradle 파일에서 > 노트에 따라 useLibrary ‘org.apache.http.legacy’ 를 추가하십시오 .Android 6.0 Changes
Apache HTTP Client Removal
android {
...
useLibrary 'org.apache.http.legacy'
...
}
누락 된 링크 오류를 방지하려면 종속성에 추가
dependencies {
provided 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
‘제공됨’을 사용하면 종속성이 apk에 포함되지 않습니다.
답변
: 그냥 파일 복사 org.apache.http.legacy.jar
에서 Android/Sdk/platforms/android-23/optional
프로젝트 폴더로 폴더를app/libs
.
23.1.1의 매력처럼 작동했습니다.
답변
이 문제를 다음과 같이 해결했습니다.
1.) GUG가 언급 한대로 최상위 빌드 파일에 클래스 경로를 설정합니다.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0-beta2'
}
allprojects {
repositories {
jcenter()
}
}
}
2.) 특정 모듈의 빌드 파일에서 :
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 'android-MNC'
buildToolsVersion '23.0.0 rc3'
}
답변
답변이 조금 오래 되었기 때문에 내 솔루션을 넣을 것입니다 (저에게 도움이 된 것), 다른 사람에게 도움이 될 수 있습니다 … 해결책이 없는 Apache 의 공식 문서 에서 솔루션을 가져 왔습니다 .
1 / gradle에서 :
dependencies {
...
// This is the maintained version from apache.
compile group: 'cz.msebera.android', name: 'httpclient', version: '4.4.1.1'
}
2 / 응용 프로그램의 나머지 부분은 교체에 org.apache.http
의해 cz.msebera.android.httpclient
귀하의 모든 수입 (종속)이 고정됩니다. Ctrl + Shift + R 만하면 전체 프로젝트에서 대체 할 수 있습니다.