Conforme mencionado aqui , o Android M não oferece suporte à API Apache HTTP. Os documentos declaram:
use a classe HttpURLConnection em vez disso.
ou
Para continuar usando as APIs HTTP Apache, você deve primeiro declarar a seguinte dependência de tempo de compilação em seu arquivo build.gradle:
android {useLibrary 'org.apache.http.legacy'}
Eu converti muito do uso do HttpClient em meu projeto para HttpURLConnection, no entanto, ainda preciso usar o HttpClient em algumas áreas. Portanto, estou tentando declarar 'org.apache.http.legacy' como uma dependência de tempo de compilação, mas estou recebendo um erro em build.gradle:
Método DSL Gradle não encontrado: 'useLibrary ()'
Minha pergunta é: como declaro 'org.apache.http.legacy' como uma dependência de tempo de compilação em meu projeto?
Qualquer ajuda é muito apreciada. obrigado
fonte
1.3.0-rc2
. Você também pode considerar o uso da edição do HttpClient compatível com Android do próprio Apache .1.0.0
tiver auseLibrary
coisa. É possível que tenha surgido antes de 1.3.x, então você pode tentar1.2.3
(AFAIK, a versão de produção mais recente) e ver o que acontece.1.3.0-rc2
(ou algo mais recente, se houver).Respostas:
Para API 23:
Build.gradle de nível superior - /build.gradle
Build.gradle específico do módulo - /app/build.gradle
Documentos oficiais (para visualização): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Log de alterações mais recente do plug-in gradle do Android: http://tools.android.com/tech-docs/new-build-system
fonte
useLibrary
deve estar no arquivo de compilação específico do seu aplicativo.packagingOptions {}
bloco dentro doandroid
bloco, dentro deste bloco, adicionarexclude 'META-INF/LICENSE'
... (cada linha por arquivo duplicado relatado)Outra alternativa é apenas adicionar a dependência jbundle. Isso é mais amigável com o Android Studio, pois o Android Studio não exibe a mensagem "não é possível resolver o símbolo ..."
fonte
Nota para Android 9 (Pie).
Além disso,
useLibrary 'org.apache.http.legacy'
você deve adicionar AndroidManifest.xml:Fonte: https://developer.android.com/about/versions/pie/android-9.0-changes-28
fonte
Em seu arquivo build.gradle, adicione useLibrary 'org.apache.http.legacy' conforme
Android 6.0 Changes
>Apache HTTP Client Removal
notas.Para evitar erros de link ausente, adicione às dependências
usando 'fornecido' a dependência não será incluída no apk
fonte
Arquivo copiado:
org.apache.http.legacy.jar
daAndroid/Sdk/platforms/android-23/optional
pasta para a pasta do projetoapp/libs
.Funcionou como charme para 23.1.1.
fonte
Resolvi este problema assim:
1.) Defina o caminho de classe no arquivo de compilação de nível superior como o GUG mencionou:
2.) No arquivo de construção do módulo específico:
fonte
Como as respostas são um pouco antigas, vou colocar minha solução (o que funcionou para mim), pode ser útil para outra pessoa ... Tirei minha solução da documentação oficial do Apache, sem contornar.
1 / no gradle:
2 / no resto do aplicativo, substitua o
org.apache.http
porcz.msebera.android.httpclient
e todas as suas importações (dependências) serão corrigidas. você pode apenas fazer ctrl + shift + R e substituí-lo em todo o projeto.fonte
deve ajudar:
Para evitar erros de link ausente, adicione às dependências
ou
Porque
fonte
FWIW, a remoção da biblioteca Apache foi prenunciada há algum tempo. Nosso bom amigo Jesse Wilson nos deu uma pista em 2011: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
O Google parou de trabalhar no ApacheHTTPClient há um tempo, então qualquer biblioteca que ainda dependa disso deve ser colocada na lista de bibliotecas obsoletas, a menos que os mantenedores atualizem seu código.
<rant>
Eu não posso te dizer quantos argumentos técnicos eu tive com pessoas que insistiam em ficar com o cliente Apache HTTP. Existem alguns aplicativos importantes que vão falhar porque a administração em meus empregadores anteriores não-nomeados não deu ouvidos aos seus melhores engenheiros ou sabia do que eles estavam falando quando ignoraram o aviso ... mas, água abaixo a Ponte.Eu ganhei.
</rant>
fonte
Para resolver os problemas, certifique-se de usar as ferramentas de compilação da versão "23.0.0 rc2" com as seguintes ferramentas de dependência do gradle de compilação:
fonte