我试图将IntelliJ项目转换为Android Studio的Gradle系统,但我遇到了Apache HttpClient错误?我是否遗漏了一些东西,我得到的错误如下:

Error:(10, 30) error: package org.apache.http.client does not exist
Error:(11, 30) error: package org.apache.http.client does not exist
Error:(12, 37) error: package org.apache.http.client.entity does not exist
Error:(13, 38) error: package org.apache.http.client.methods does not exist
Error:(14, 38) error: package org.apache.http.client.methods does not exist
Error:(15, 38) error: package org.apache.http.client.methods does not exist
Error:(16, 35) error: package org.apache.http.impl.client does not exist
Error:(134, 33) error: cannot find symbol class HttpUriRequest
Error:(164, 39) error: cannot find symbol class HttpUriRequest
Error:(106, 17) error: cannot find symbol class HttpGet
Error:(106, 39) error: cannot find symbol class HttpGet
Error:(117, 17) error: cannot find symbol class HttpPost
Error:(117, 40) error: cannot find symbol class HttpPost
Error:(125, 43) error: cannot find symbol class UrlEncodedFormEntity
Error:(135, 9) error: cannot find symbol class HttpClient
Error:(135, 33) error: cannot find symbol class DefaultHttpClient
Error:(155, 18) error: cannot find symbol class ClientProtocolException
Error:(165, 9) error: cannot find symbol class HttpClient
Error:(165, 33) error: cannot find symbol class DefaultHttpClient
Error:(185, 18) error: cannot find symbol class ClientProtocolException

我的建立。Gradle文件有以下依赖项:

dependencies {
    compile 'com.google.android.gms:play-services:+'
    compile 'org.apache.httpcomponents:httpclient:4.2.6'
    compile 'org.apache.httpcomponents:httpmime:4.2.6'
    compile files('libs/core.jar')
}

似乎很多人都遇到了类似的问题,但SO和谷歌都没有解决方案,所以我希望这个问题能帮助未来的搜索者。


当前回答

这就是我所做的,而且对我很有效。

步骤1:将此添加到构建中。年级(模块:应用)

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

步骤2:同步项目并完成。

其他回答

我遇到过类似的问题,你可以用类似的方法让它工作。

首先,在你当前的配置中尝试一下,从httpmime中排除httpclient:

dependencies {
    compile 'com.google.android.gms:play-services:+'
    compile ('org.apache.httpcomponents:httpmime:4.2.6'){
            exclude module: 'httpclient'
        }
    compile 'org.apache.httpcomponents:httpclient:4.2.6'
} 

在我的情况下,我通过使用以下罐子来修复它:

httpclient-android-4.3.5.1.jar httpmime-4.3.5.jar

然后,在构建中。Gradle,排除httpclient从httpmime:

dependencies {
    compile 'com.google.android.gms:play-services:+'
    compile('org.apache.httpcomponents:httpmime:4.3.5') {
        exclude module: 'httpclient'
    }
    compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
}

基本上你所需要做的就是添加:

useLibrary  'org.apache.http.legacy'

适合你的身材。gradle文件。

我遇到了这个问题,然后找到了这些页面: 在这里您可以看到apache库已弃用,但它没有被删除,所以它应该可以工作。它不是。

See.

在这里您可以看到如何将apache库包含到您的项目中

See.

我通过在我的构建中添加以下内容来解决这个问题。Gradle文件推荐在第二个链接。

android {
    useLibrary 'org.apache.http.legacy'
}

然而,这只在你使用gradle 1.3.0-beta2或更高版本时有效,所以如果你在一个较低的版本上,你必须将这个添加到buildscript依赖项中:

classpath 'com.android.tools.build:gradle:1.3.0-beta2'

将Android/Sdk/platforms/ Android -23/optional文件夹下的org.apache.http.legacy.jar复制到app/libs

并将这一行添加到app.gradle文件中

compile files('libs/org.apache.http.legacy.jar')

但是如果您正在使用更多的jar库,您可以使用这种方式

compile fileTree(dir: 'libs', include: ['*.jar'])

我不得不发帖,因为上面的答案都不完全适合我。

我正在使用Android Studio

classpath 'com.android.tools.build:gradle:1.5.0'

compileSdkVersion 23
buildToolsVersion "23.0.3"

步骤1:下载最新的jar文件(http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip)

第二步:复制粘贴.jar文件到你的模块(可以是app或library)中的libs文件夹(如果不存在就创建)

步骤3:右键单击jar并“添加为库”。它会自动将jar文件作为依赖项添加到模块的gradle文件中

第4步:现在你的问题会自动得到解决,但如果你在你的应用程序中使用proguard,它会给你关于重复类文件的警告,不会让你构建。这是一个已知的错误,您需要在您的proguard-rules中添加以下内容

-dontwarn org.apache.commons.**
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**

好运!