Estou tentando converter um projeto IntelliJ no sistema Gradle do Android Studio, mas estou com erros no Apache HttpClient? Estou faltando alguma coisa, os erros que estou recebendo são os seguintes:
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
Meu arquivo build.gradle possui as seguintes dependências:
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')
}
Parece que muitas pessoas estão tendo um problema semelhante, mas nem o SO nem o Google têm uma solução, então espero que essa pergunta ajude os futuros pesquisadores.
se você estiver usando o sdk de destino como 23, adicione o código abaixo em seu build.gradle
e mude seu buildscript para
para mais informações siga este link
fonte
Error:(14, 23) error: package org.apache.http does not exist
Eu tive esse problema e encontrei estas páginas: Aqui você pode ver que a biblioteca do apache está obsoleta, mas não foi removida, portanto deve funcionar. Não faz.
Veja .
E aqui você pode ver como incluir a biblioteca apache no seu projeto
Veja .
Resolvi o problema adicionando o seguinte ao meu arquivo build.gradle, conforme recomendado no segundo link.
No entanto, isso só funciona se você estiver usando o gradle 1.3.0-beta2 ou superior, portanto, será necessário adicioná-lo às dependências do buildscript se você estiver em uma versão inferior:
Espero que isto ajude.
fonte
Adicione esta biblioteca ao
build.gradle
fonte
build.gradle
, mas sim dentro do módulo pasta você está construindo (ou seja, "app")cópia
org.apache.http.legacy.jar
que está naAndroid/Sdk/platforms/android-23/optional
pasta paraapp/libs
e também adicionou esta linha ao arquivo app.gradle
Mas se você estiver usando mais bibliotecas jar, poderá usar desta maneira
fonte
Basicamente, tudo o que você precisa fazer é adicionar:
Para o seu
build.gradle
arquivo.fonte
Eu tive o mesmo problema. A resposta de Daniel Nugent ajudou um pouco (depois de seguir seu conselho
HttpResponse
- masHttpClient
ainda faltava).Então, aqui está o que foi corrigido para mim:
4.5.1.zip
da seção bináriahttpcore-4.4.3
&httpclient-4.5.1.jar
naproject/libs
pastaEspero que ajude.
fonte
Encontrei problemas semelhantes; talvez você consiga fazê-lo funcionar usando um método semelhante.
Primeiro, tente isso com sua configuração atual, exclua
httpclient
dehttpmime
:No meu caso, eu o corrigi usando os seguintes frascos:
Em seguida, no build.gradle, excluindo
httpclient
dehttpmime
:fonte
libs/core.jar
?Resposta perfeita de Jinu e Daniel
Adicionando a isso, resolvi o problema usando This, se o compileSdkVersion for 19 (IN MY CASE)
caso contrário, se sua compileSdkVersion for 23, use
fonte
Foi isso que fiz e funciona para mim.
etapa 1: adicione isso no build.grade (módulo: app)
Etapa 2: sincronizar o projeto e pronto.
fonte
A versão do cliente HTTP Apache fornecida no estoque Android era muito, muito antiga .
Embora você possa continuar usando a biblioteca obsoleta antiga por meio da
useLibrary 'org.apache.http.legacy'
solução alternativa (sugerida por @Jinu e outros), você realmente precisa morder o marcador e atualizar para outra coisa, por exemplo, o Android nativoHttpUrlConnection
ou se isso não atender às suas necessidades, você pode usar a biblioteca OkHttp , queHttpUrlConnection
é a base interna de qualquer maneira.O OkHttp, na verdade, possui uma camada de compatibilidade que usa a mesma API do cliente Apache, embora eles não implementem todos os mesmos recursos, portanto sua milhagem pode variar.
Embora seja possível importar uma versão mais recente do cliente Apache (como sugerido por @MartinPfeffer), é provável que a maioria das classes e métodos que você estava usando antes tenha sido descontinuada, e há um grande risco de que a atualização introduza bugs no seu código (por exemplo, encontrei algumas conexões que funcionavam anteriormente por trás de um proxy não funcionavam mais), portanto, essa não é uma ótima solução.
fonte
Depois de passar dias no assunto, finalmente consegui resolver. Infelizmente, precisamos disso se quisermos usar arquivos de expansão. A solução foi fornecida por algumas pessoas aqui, mas para mim as respostas estavam faltando alguns pequenos detalhes que poderiam economizar muito tempo para mim. Aqui está a sequência de eventos para iniciantes como eu, para economizar seu precioso tempo.
Primeiro importei a pasta "library" de D: \ Users \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing para o projeto, acessando File, New, Import Module e navegando até a pasta "library". Se você abrir o SDK Manager e clicar em "Launch Standalone SDK Manager" na parte inferior da tela pop-up, poderá passar o ponteiro do mouse sobre a pasta "Extras", na parte inferior, e as pequenas informações amarelas informarão onde você encontrará o pacote que você precisa importar.
Feito isso, vá até a seção "biblioteca" no painel esquerdo com "Projeto" e, dentro dela, a guia "Android" aberta. Abra a seção java da biblioteca e abra a classe APKExpansionPolicy. Se você tiver erros e os org.apache.http.NameValuePair de importação e org.apache.http.client.utils.URLEncodedUtils de importação estiverem cinza claro, abra o build.gradle (Projeto: qualquer que seja) e verifique em "buildscript" em "dependências", você inclui o "caminho da classe 'com.android.tools.build:gradle:1.5.0". O 1.5.0 pode ser diferente no seu caso. Eu acho que depende da sua versão do Studio. O meu é 1.5.1. Se o seu for mais recente, você será lembrado para atualizar os números.
Depois disso, vá para "build.gradle (Módulo: biblioteca) e inclua o" useLibrary 'org.apache.http.legacy' na seção "android". Sincronizar agora (canto superior R / H) deve ser oferecido. Faça.
Se você receber mais mensagens de erro (eu não saberia porque fiz o contrário), os arquivos Apache podem estar ausentes no seu projeto, pois o apache não é mais suportado. Encontre-os em C / D: Usuários / Seu nome / AppData / Local / Android / Sdk / plataformas / android-23 / opcional e copie / cole-os na pasta yourproject / app / libs. Você deve ter um arquivo opcional.json e org.apache.http.legacy.jar lá. É melhor ir ao site do apache e baixar a versão mais recente: http://hc.apache.org/downloads.cgi Descompacte-o em qualquer lugar que desejar, abra-o, vá para "lib", copie o httpclient-4.5.1 .jar e substitua o arquivo org.apache.http.legacy.jar por ele.
Sincronize e reconstrua / limpe seu projeto, e isso deve ser bom.
Por precaução, abra o seu terminal (parte inferior esquerda do Android Studio) e digite "gradlew clean". Ele instalará algumas coisas. Uma vez feito, digite "gradlew assemble". Demorará alguns minutos para terminar, mas os erros serão exibidos se você tiver algum, é claro. Se você não conseguir digitar nada no Terminal, inicie o prompt de comando (botão Windows + R), digite cmd, pressione OK, clique com o botão direito do mouse no título da pequena tela pop-up preta (C: \ WINDOWS \ system32 \ cmd.exe) , Propriedades, Opções, na parte inferior da janela, verifique se "Usar console herdado" está espessa. Reinicie o A.Studio.
Boa sorte!
fonte
Eu tive que postar, pois nenhuma das respostas acima funcionou completamente para mim.
Estou usando o Android Studio
Etapa 1: Faça o download do último arquivo jar ( http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip )
Etapa 2: Copie e cole o arquivo .jar na pasta libs (crie se já não existir) no seu módulo (pode ser aplicativo ou biblioteca)
Etapa 3: Clique com o botão direito do mouse no jar e em "Adicionar como biblioteca". Ele adicionará automaticamente o arquivo jar como uma dependência no arquivo gradle do seu módulo
Etapa 4: agora, automaticamente, seu problema será resolvido, mas, se você estiver usando o programa em seu aplicativo, ele avisará sobre arquivos de classe duplicados e não permitirá a criação. É um bug conhecido e você precisa adicionar o seguinte às regras do seu proguard
Boa sorte!
fonte
No meu caso, atualizei uma das minhas bibliotecas no meu projeto android.
Estou usando o Reservoir como minha solução de armazenamento em cache: https://github.com/anupcowkur/Reservoir
Eu fui de:
Para:
O autor da biblioteca deve ter removido a biblioteca commons-io do repositório para que meu aplicativo não funcione mais.
Eu tive que incluir manualmente o commons-io adicionando isso ao gradle:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
fonte
Clonei o seguinte: https://github.com/google/play-licensing
Então eu importei isso no meu projeto.
fonte