terça-feira, 1 de setembro de 2015

Problemas com a biblioteca apache no android 6

Fiquei duas horas e meia tentando resolver ontem, mais uma hora e meia hoje. Meu problema era um erro que encontrei no meu projeto, com a biblioteca do apache, para fazer webrequests. Achava que o problema era a migração para o Android Studio. E eu não pretendo voltar ao eclipse.

O erro que aparece é:

"error: package org.apache.http does not exist"

Procurei na internet e encontrei diversas recomendações. A primeira foi adicionar uma biblioteca do apache na lista de dependencies. Adicionei, mas ele ainda não encontrava a classe org.apache.http.client.utils.URLEncodedUtils. Uma outra sugestão foi forçar o uso da biblioteca apache, colocando o código android { useLibrary 'org.apache.http.legacy' } no gradle.

Encontrei pessoas falando para usar uma biblioteca chamada Volley, que deve substituir a do apache. E pensei em ajustar o projeto para usar. Descobri que a LVL, biblioteca do android para verificar licença, não está adaptada. Não encontrei qualquer versão dela que estivesse. Mesmo a versão oficial do site. Só bastante gente xingando por não terem adaptado ainda, pois a versão Marshmallow do android (6.0) vai cortar a biblioteca apache.

Nesse momento, me dei conta de que tinha atualizado o arquivo gradle para usar a última API do Android, a 23, do Marshmallow, assim que migrei para o Android Studio. Estava usando a API 19 como máxima antes, muito atrasado. Mudei para 22. Tudo voltou a funcionar.

6 comentários:

  1. Mas porque o Android vai parar de usar a biblioteca apache no android 6.0?
    E o que vai substituir ela?
    Estou com o mesmo problema, estou trabalhando num projeto que precisa mandar um JSON para um domínio web, só achei tutoriais explicando com a biblioteca apache, como posso fazer isso sem essa biblioteca agora?

    ResponderExcluir
    Respostas
    1. Não sei exatamente o motivo. O que sei é que ela foi removida e descobri isso tendo problemas. Fui buscar agora, achei isso:

      http://developer.android.com/samples/NetworkConnect/index.html

      Excluir
  2. Pode ser usado o "Retrofit" no lugar do client Apache HTTP

    ResponderExcluir
    Respostas

    1. Imagino que há mais de uma para substituir a Apache. Ainda não fui procurar. Antes vou ver o que a LVL usou, se é que substituíram.

      Agradeço.

      (sim, eu sei, o post tem mais de um ano, é que tenho mais de uma coisa sendo feita ao mesmo tempo, além de trabalhar)

      Excluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir