Android Gradle Apache HttpClient不存在?



6 Answers

如果您使用target sdk作為23,請在build.gradle中添加以下代碼

android{
    compileSdkVersion 23
    buildToolsVersion '23.0.1'
    useLibrary  'org.apache.http.legacy'
}

並將你的buildscript改為

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

有關更多信息,請點擊此link

Question

我正在嘗試將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

我的build.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或Google都沒有解決方案,所以我希望這個問題能夠幫助未來的搜索者。




這就是我所做的,它對我很有用。

第1步:將這添加到build.grade(module:app)

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

第2步:同步項目並完成。




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'])



我遇到了類似的問題,您可能可以使用類似的方法使其工作。

首先,用你當前的配置試試這個,從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'
} 

在我的情況下,我通過使用以下罐子來解決它:

然後,在build.gradle中,從httpmime排除httpclient

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'
}



在我的情況下,我更新了我的android項目中的一個庫。

我使用Reservoir作為緩存存儲解決方案: https://github.com/anupcowkur/Reservoirhttps://github.com/anupcowkur/Reservoir

我從:

compile 'com.anupcowkur:reservoir:2.1'

至:

compile 'com.anupcowkur:reservoir:3.1.0'

庫作者必須已經從回購庫中刪除了commons-io庫,所以我的應用程序不再有效。

我必須手動將commons-io添加到gradle中:

compile 'commons-io:commons-io:2.5'

https://mvnrepository.com/artifact/commons-io/commons-io/2.5




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

useLibrary  'org.apache.http.legacy'

到你的build.gradle文件。




花了幾天時間後,我終於設法解決了這個問題。 不幸的是我們需要它,如果我們想使用擴展文件。 這個解決方案由幾個人在這裡提供,但對我來說,答案缺少一些細節,可以為我節省很多時間。 以下是像我這樣的新手為了節省寶貴時間而發生的一系列事件。

首先,通過進入文件,新建,導入模塊並導航到“庫”文件夾,將D:\ Users \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing中的“庫”文件夾導入到項目中。 如果您打開SDK管理器並單擊彈出窗口底部的“啟動獨立SDK管理器”,則可將指針懸停在底部的“Extras”文件夾下方,小黃色信息會告訴您在哪裡可以找到您需要導入的軟件包。

完成之後,進入左側窗格的“庫”部分,並在“項目”中打開“Android”選項卡。 打開庫的java部分並打開APKExpansionPolicy類。 如果你有錯誤,並且導入org.apache.http.NameValuePair和導入org.apache.http.client.utils.URLEncodedUtils是灰色的,請打開build.gradle(Project:whatever)並確保在“buildscript”在“依賴”下,你有“classpath”com.android.tools.build:gradle:1.5.0“包括在內。 你的情況下1.5.0可能會有所不同。 我想這取決於你的Studio版本。 我的是1.5.1。 如果你的更新,你會被提醒更新數字。

之後,進入“build.gradle(Module:library)並將”useLibrary'org.apache.http.legacy'包含到“android”部分。 現在應該提供同步(R / H頂部角落)。 做到這一點。

如果你得到更多的錯誤信息(我不知道它是因為我反其道而行),Apache文件可能會從你的項目中丟失,因為Apache不再受支持。 在C / D中找到它們:Users / Yourname / AppData / Local / Android / Sdk / platforms / android-23 /可選,並將它們複製/粘貼到您的project / app / libs文件夾中。 你應該有一個optional.json和一個org.apache.http.legacy.jar文件。 你最好去apache的網站並下載最新的版本: http://hc.apache.org/downloads.cgi : http://hc.apache.org/downloads.cgi將它解壓到你想要的任何地方,打開它,去“lib”,複製httpclient-4.5.1 .jar文件,並用它替換org.apache.http.legacy.jar文件。

同步並重建/清理您的項目,應該很好。

為了以防萬一,請打開您的終端(Android Studio的L / H底部)並輸入“gradlew clean”。 它會安裝一些東西。 完成後,輸入“gradlew assemble”。 完成需要幾分鐘的時間,但如果您有任何問題,它會給您帶來錯誤。 如果無法在終端中輸入任何內容,請啟動命令提示符(Windows按鈕+ R),輸入cmd,點擊確定,右鍵單擊小黑色彈出屏幕的標題(C:\ WINDOWS \ system32 \ cmd.exe) ,“屬性”,“選項”,在窗口底部檢查“使用舊版控制台”的厚度。 重新啟動A.Studio。

祝你好運!






Related