Saya mencoba mengonversi proyek IntelliJ ke sistem Gradle Android Studio, tetapi saya mengalami kesalahan dengan Apache HttpClient? Apakah saya kehilangan sesuatu, kesalahan yang saya dapatkan adalah sebagai berikut:
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
File build.gradle saya memiliki dependensi berikut:
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')
}
Tampaknya banyak orang mendapatkan masalah serupa tetapi SO atau Google tidak memiliki solusi, jadi saya berharap pertanyaan ini akan membantu para pencari di masa depan.
jika Anda menggunakan target SDK sebagai 23 tambahkan kode di bawah ini di build.gradle Anda
dan ubah skrip build Anda menjadi
untuk info lebih lanjut ikuti tautan ini
sumber
Error:(14, 23) error: package org.apache.http does not exist
Saya mengalami masalah ini dan kemudian menemukan halaman-halaman ini: Di sini Anda dapat melihat bahwa pustaka apache sudah tidak digunakan lagi, tetapi itu tidak dihapus, jadi seharusnya sudah berfungsi. Tidak.
Lihat .
Dan di sini Anda dapat melihat cara memasukkan pustaka apache ke proyek Anda
Lihat .
Saya menyelesaikan masalah dengan menambahkan berikut ke file build.gradle saya seperti yang direkomendasikan di tautan kedua.
Namun ini hanya berfungsi jika Anda menggunakan gradle 1.3.0-beta2 atau lebih tinggi, jadi Anda harus menambahkan ini ke dependensi buildscript jika Anda menggunakan versi yang lebih rendah:
Semoga ini membantu.
sumber
Tambahkan perpustakaan ini ke dalam
build.gradle
sumber
build.gradle
, melainkan di dalam folder modul yang sedang Anda bangun (yaitu "aplikasi")salin
org.apache.http.legacy.jar
yang ada di dalamAndroid/Sdk/platforms/android-23/optional
folder keapp/libs
dan juga menambahkan baris ini ke file app.gradle
Tetapi jika Anda menggunakan lebih banyak perpustakaan jar, Anda bisa menggunakan cara ini
sumber
Pada dasarnya yang perlu Anda lakukan adalah menambahkan:
Ke
build.gradle
file Anda .sumber
Saya mengalami masalah yang sama. Jawaban Daniel Nugent sedikit membantu (setelah mengikuti sarannya
HttpResponse
ditemukan - tetapiHttpClient
masih hilang).Jadi inilah yang diperbaiki untuk saya:
4.5.1.zip
dari bagian binerhttpcore-4.4.3
&httpclient-4.5.1.jar
diproject/libs
folderSemoga ini bisa membantu.
sumber
Saya mengalami masalah serupa, Anda mungkin bisa membuatnya bekerja menggunakan metode yang serupa.
Pertama, coba ini dengan konfigurasi Anda saat ini, kecualikan
httpclient
darihttpmime
:Dalam kasus saya, saya memperbaikinya dengan menggunakan stoples berikut:
Lalu, di build.gradle, tidak termasuk
httpclient
darihttpmime
:sumber
libs/core.jar
?Jawaban Sempurna oleh Jinu dan Daniel
Menambahkan ke ini saya memecahkan Masalah dengan Menggunakan Ini, jika compileSdkVersion Anda adalah 19 (DALAM KASUS SAYA)
lain jika compileSdkVersion Anda adalah 23 maka gunakan
sumber
Inilah yang saya lakukan, dan itu berhasil untuk saya.
langkah 1: tambahkan ini di build.grade (module: app)
langkah 2: sinkronkan proyek dan selesai.
sumber
Versi klien HTTP Apache yang disediakan untuk Android sangat lama .
Meskipun Anda dapat terus menggunakan pustaka lama yang sudah usang melalui
useLibrary 'org.apache.http.legacy'
solusi (disarankan oleh @Jinu dan yang lain), Anda benar-benar perlu menggigit peluru dan memperbarui ke hal lain, misalnya Android asliHttpUrlConnection
, atau jika itu tidak memenuhi kebutuhan Anda, Anda dapat menggunakan pustaka OkHttp , yang merupakanHttpUrlConnection
basis internal .OkHttp sebenarnya memiliki lapisan kompatibilitas yang menggunakan API yang sama dengan klien Apache, meskipun mereka tidak mengimplementasikan semua fitur yang sama, sehingga jarak tempuh Anda mungkin bervariasi.
Meskipun dimungkinkan untuk mengimpor versi yang lebih baru dari klien Apache (seperti yang disarankan oleh @MartinPfeffer), kemungkinan bahwa sebagian besar kelas dan metode yang Anda gunakan sebelumnya telah ditinggalkan, dan ada risiko yang cukup besar bahwa pembaruan akan memperkenalkan bug. dalam kode Anda (misalnya saya menemukan beberapa koneksi yang sebelumnya bekerja dari belakang proxy tidak lagi berfungsi), jadi ini bukan solusi yang bagus.
sumber
Setelah menghabiskan waktu berhari-hari untuk masalah ini, akhirnya saya berhasil menyelesaikannya. Sayangnya kami membutuhkannya jika kami ingin menggunakan file ekspansi. Solusinya telah disediakan oleh beberapa orang di sini, tetapi bagi saya jawabannya hilang beberapa detail kecil yang bisa menghemat banyak waktu untuk saya. Berikut adalah urutan acara untuk pemula seperti saya untuk menghemat waktu berharga Anda.
Pertama saya mengimpor folder "library" dari D: \ Users \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing ke proyek dengan masuk ke File, New, Import Module dan menavigasi ke folder "library". Jika Anda membuka SDK Manager dan klik "Luncurkan Standalone SDK Manager" di bagian bawah layar sembulan, Anda dapat mengarahkan kursor ke folder "Ekstra" di bagian bawah dan info kuning kecil akan memberi tahu Anda di mana Anda akan menemukan paket yang perlu Anda impor.
Setelah itu selesai, pergi ke bagian "perpustakaan" di panel kiri dengan "Project" dan di dalamnya tab "Android" terbuka. Buka bagian java perpustakaan dan buka kelas APKExpansionPolicy. Jika Anda memiliki kesalahan dan import org.apache.http.NameValuePair dan import org.apache.http.client.utils.URLEncodedUtils berwarna abu-abu pucat, buka build.gradle (Proyek: apa pun) dan pastikan bahwa dalam "buildscript" di bawah "dependancies" Anda memiliki "classpath 'com.android.tools.build:gradle:1.5.0" termasuk. 1.5.0 mungkin berbeda dalam kasus Anda. Saya kira itu tergantung pada versi Studio Anda. Milik saya adalah 1.5.1. Jika milik Anda lebih baru, Anda akan diingatkan untuk memperbarui nomornya.
Setelah itu, buka "build.gradle (Module: library) dan sertakan" useLibrary 'org.apache.http.legacy' ke dalam bagian "android". Sinkronkan Sekarang (sudut atas R / H) harus ditawarkan. Lakukan.
Jika Anda mendapatkan pesan kesalahan lebih lanjut (saya tidak akan mengetahuinya karena saya melakukannya sebaliknya), file-file Apache mungkin hilang dari proyek Anda, karena apache tidak didukung lagi. Temukan mereka di C / D: Pengguna / NamaAnda / AppData / Lokal / Android / SDK / platform / android-23 / opsional dan salin / tempelkan ke folder proyek / app / libs Anda. Anda harus memiliki file opsional.json dan org.apache.http.legacy.jar di sana. Anda mungkin lebih baik pergi ke situs web apache dan memuat versi terbaru: http://hc.apache.org/downloads.cgi Buka ritsleting di mana pun Anda inginkan, buka, buka "lib", salin httpclient-4.5.1 File .jar dan ganti file org.apache.http.legacy.jar dengannya.
Sinkronkan dan bangun kembali / bersihkan proyek Anda dan itu harus baik untuk pergi.
Untuk berjaga-jaga, buka terminal Anda (L / H bawah Android Studio) dan ketik "gradlew clean". Ini akan menginstal beberapa hal. Setelah selesai, ketikkan "gradlew assemble". Ini akan memakan waktu beberapa menit untuk menyelesaikannya, tetapi itu akan memberi Anda kesalahan jika Anda memiliki tentu saja. Jika Anda tidak dapat mengetikkan apa pun di Terminal, jalankan command prompt (tombol Windows + R), ketik cmd, tekan OK, klik kanan pada judul layar popup hitam kecil (C: \ WINDOWS \ system32 \ cmd.exe) , Properties, Options, di bagian bawah jendela periksa apakah "Use legacy console" sudah kental. Mulai ulang A.Studio.
Semoga berhasil!
sumber
Saya harus memposting karena tidak ada jawaban di atas yang bekerja sepenuhnya untuk saya.
Saya menggunakan Android Studio
Langkah 1: Unduh file jar terbaru ( http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip )
Langkah 2: Salin tempelkan file .jar ke folder libs (buat jika belum ada) di modul Anda (bisa berupa aplikasi atau pustaka)
Langkah 3: Klik kanan pada toples dan "Add as Library". Ini secara otomatis akan menambahkan file jar sebagai ketergantungan pada file gradle modul Anda
Langkah 4: Sekarang secara otomatis masalah Anda akan teratasi tetapi jika Anda menggunakan proguard di aplikasi Anda, itu akan memberi Anda peringatan tentang duplikat file kelas dan tidak akan membiarkan Anda membangun. Ini adalah bug yang dikenal dan Anda perlu menambahkan yang mengikuti aturan proguard Anda
Semoga berhasil!
sumber
Dalam kasus saya, saya memperbarui salah satu perpustakaan saya di proyek android saya.
Saya menggunakan Reservoir sebagai solusi penyimpanan cache saya: https://github.com/anupcowkur/Reservoir
Saya pergi dari:
Untuk:
Penulis perpustakaan harus menghapus perpustakaan commons-io dari repo sehingga aplikasi saya tidak lagi berfungsi.
Saya harus memasukkan commons-io secara manual dengan menambahkan ini ke gradle:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
sumber
Saya mengkloning yang berikut ini: https://github.com/google/play-licensing
Kemudian saya mengimpornya ke proyek saya.
sumber