我有一个简单的类写在Android Studio:
package com.mysite.myapp;
import org.apache.http.client.HttpClient;
public class Whatever {
public void headBangingAgainstTheWallExample () {
HttpClient client = new DefaultHttpClient();
}
}
从这里我得到了以下编译时错误:
无法解析HttpClient符号
HttpClient不是包含在Android Studio SDK中吗?即使不是,我也像这样把它添加到我的Gradle构建中:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'org.apache.httpcomponents:httpclient:4.5'
}
不管有没有最后一个编译行,错误都是一样的。我错过了什么?
在API 22中,它们被弃用了,在API 23中,它们被完全删除了,如果你不需要新添加的所有花哨的东西,一个简单的解决方法是简单地使用API 22之前集成的apache的。jar文件,但作为独立的。jar文件:
1. http://hc.apache.org/downloads.cgi
2. download httpclient 4.5.1, the zile file
3. unzip all files
4. drag in your project httpclient-4.5.1.jar, httpcore-4.4.3.jar and httpmime-4.5.1.jar
5. project, right click, open module settings, app, dependencies, +, File dependency and add the 3 files
6. now everything should compile properly
你只需要加一行
useLibrary 'org.apache.http.legacy'
为构建。例如gradle(Module: app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.avenues.lib.testotpappnew"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
}
Android 6.0 (API Level 23)版本删除了对Apache HTTP客户端的支持。因此你不能在API 23中直接使用这个库。但还是有办法利用它的。添加useLibrary ` org.apache.http。在你的构建中遗留'。Gradle文件如下-
android {
useLibrary 'org.apache.http.legacy'
}
如果这没有工作,你可以应用以下黑客-
将Android SDK目录/platforms/ Android -23/optional路径下的org.apache.http.legacy.jar复制到项目的app/libs文件夹。
-现在在build的dependencies{}部分中添加编译文件(' libs/org.apache.http.legacy.jar ')。gradle文件。
在API 22中,它们被弃用了,在API 23中,它们被完全删除了,如果你不需要新添加的所有花哨的东西,一个简单的解决方法是简单地使用API 22之前集成的apache的。jar文件,但作为独立的。jar文件:
1. http://hc.apache.org/downloads.cgi
2. download httpclient 4.5.1, the zile file
3. unzip all files
4. drag in your project httpclient-4.5.1.jar, httpcore-4.4.3.jar and httpmime-4.5.1.jar
5. project, right click, open module settings, app, dependencies, +, File dependency and add the 3 files
6. now everything should compile properly