Seperti yang disebutkan di sini , Android M tidak akan mendukung Apache HTTP API. Dokumen menyatakan:
gunakan kelas HttpURLConnection sebagai gantinya.
atau
Untuk terus menggunakan Apache HTTP API, Anda harus mendeklarasikan ketergantungan waktu kompilasi berikut dalam file build.gradle Anda:
android {useLibrary 'org.apache.http.legacy'}
Saya telah mengonversi banyak penggunaan HttpClient proyek saya ke HttpURLConnection, namun, saya masih perlu menggunakan HttpClient di beberapa area. Karenanya, saya mencoba mendeklarasikan 'org.apache.http.legacy' sebagai dependensi waktu kompilasi tetapi saya mendapatkan kesalahan dalam build.gradle:
Metode Gradle DSL tidak ditemukan: 'useLibrary ()'
Pertanyaan saya adalah: bagaimana cara mendeklarasikan 'org.apache.http.legacy' sebagai ketergantungan waktu kompilasi dalam proyek saya?
Bantuan apa pun sangat dihargai. Terima kasih
sumber
1.3.0-rc2
. Anda juga dapat mempertimbangkan untuk menggunakan edisi HttpClient yang kompatibel dengan Android milik Apache .1.0.0
memiliki baranguseLibrary
itu. Mungkin saja itu merangkak sebelum 1.3.x, jadi Anda dapat mencoba1.2.3
(AFAIK, rilis produksi terbaru) dan melihat apa yang terjadi.1.3.0-rc2
(atau sesuatu yang lebih baru, jika ada).Jawaban:
Untuk API 23:
Tingkat atas build.gradle - /build.gradle
Build.gradle khusus modul - /app/build.gradle
Dokumen resmi (untuk pratinjau): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Log perubahan plugin gradle android terbaru: http://tools.android.com/tech-docs/new-build-system
sumber
useLibrary
harus ada di file build khusus aplikasi Anda.packagingOptions {}
blok di dalamandroid
blok, di dalam blok ini, tambahkanexclude 'META-INF/LICENSE'
... (setiap baris per file duplikat dilaporkan)Alternatif lain adalah dengan menambahkan dependensi jbundle. Ini lebih ramah Android Studio karena Android Studio tidak memberikan pesan "tidak dapat menyelesaikan simbol ..."
sumber
Catatan untuk Android 9 (Pai).
Selain itu,
useLibrary 'org.apache.http.legacy'
Anda harus menambahkan AndroidManifest.xml:Sumber: https://developer.android.com/about/versions/pie/android-9.0-changes-28
sumber
Di file build.gradle Anda, tambahkan useLibrary 'org.apache.http.legacy' sesuai
Android 6.0 Changes
>Apache HTTP Client Removal
catatan.Untuk menghindari kesalahan link yang hilang, tambahkan dependensi
menggunakan 'asalkan' ketergantungan tidak akan disertakan dalam apk
sumber
Baru saja menyalin file:
org.apache.http.legacy.jar
dariAndroid/Sdk/platforms/android-23/optional
folder ke folder proyekapp/libs
.Bekerja seperti pesona untuk 23.1.1.
sumber
Saya memecahkan masalah ini seperti:
1.) Setel jalur kelas dalam file versi tingkat atas seperti yang disebutkan GUG:
2.) Dalam membangun file modul tertentu:
sumber
Karena jawabannya agak lama, saya akan memberikan solusi saya (apa yang berhasil untuk saya), ini dapat membantu orang lain ... Saya mengambil solusi saya dari dokumentasi resmi Apache, tidak ada solusi .
1 / dalam gradle:
2 / di aplikasi lainnya, ganti
org.apache.http
olehcz.msebera.android.httpclient
dan semua impor Anda (dependensi) akan diperbaiki. Anda tinggal melakukan ctrl + shift + R dan menggantinya di seluruh proyek.sumber
itu akan membantu:
Untuk menghindari kesalahan link yang hilang, tambahkan dependensi
atau
karena
sumber
FWIW penghapusan pustaka Apache telah diramalkan beberapa waktu lalu. Teman baik kami Jesse Wilson memberi kami petunjuk di tahun 2011: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google berhenti bekerja di ApacheHTTPClient beberapa waktu yang lalu, jadi pustaka apa pun yang masih mengandalkannya harus dimasukkan ke dalam daftar pustaka yang tidak digunakan lagi kecuali pengelola memperbarui kodenya.
<rant>
Saya tidak dapat memberi tahu Anda berapa banyak argumen teknis yang saya miliki dengan orang-orang yang bersikeras untuk tetap menggunakan klien HTTP Apache. Ada beberapa aplikasi utama yang akan rusak karena manajemen di tempat kerja saya sebelumnya yang tidak akan disebutkan namanya tidak mendengarkan insinyur top mereka atau tahu apa yang mereka bicarakan ketika mereka mengabaikan peringatan itu ... tetapi, air di bawah jembatan.Saya menang.
</rant>
sumber
Untuk mengatasi masalah tersebut, pastikan Anda menggunakan fitur build versi "23.0.0 rc2" dengan dependensi gradle build alat berikut:
sumber