
Em 2015, já publicamos um artigo sobre as cinco principais bibliotecas que usamos naquele momento. No entanto, a plataforma Android cresceu significativamente desde então. Como você sabe, em um campo tão rapidamente desenvolvido como o desenvolvimento de software, tudo muda e se desenvolve na velocidade da luz. Por isso, decidimos que era hora de atualizar a lista das bibliotecas Android mais eficazes.
Sem mais delongas, vamos direto para a nossa lista. Primeiro, examinaremos uma das mais antigas, mas, na minha opinião, uma das bibliotecas Android mais eficazes.
O Retrofit é um cliente HTTP com segurança de tipo que permite apresentar sua API REST como uma interface. Você poderá gerenciar corpos, cabeçalhos, parâmetros de solicitações de API e muitos outros com a ajuda de anotações, o que tornará esse processo simples e compreensível. A atualização também permite fazer chamadas de API síncronas e assíncronas.
interface ApiService { @GET("movie/{id}") fun getMovieDetails(@Path("id") id: String) : Call<MovieDetails> }
Além disso, o Retrofit fornece um módulo Rx separado. Se você usar o Rx, este módulo retornará Observable ao acessar a API, o que permitirá associá-lo ao restante do seu aplicativo. Estas são apenas algumas das muitas razões pelas quais ainda amamos e usamos o Retrofit.
Moshi é uma biblioteca para converter JSON em objetos Java e Kotlin. Muitos percebem Moshi como GSON 3.0. No entanto, essa biblioteca é superior ao GSON em vários aspectos: é mais rápida , suporta o Kotlin, atualiza, gera exceções previsíveis e não usa o adaptador DateTime corrompido por padrão. Além disso, usando Moshi, o processo de conversão de objetos JSON em Java (e vice-versa) se torna o mais simples e direto possível.
val moshi = Moshi.Builder().build() val jsonAdapter = moshi.adapter(Model::class.java) /* JSON to Model */ val model = jsonAdapter.fromJson(json) val json = jsonAdapter.toJson(model)
Também adoramos a Moshi por oferecer suporte à API JSON. A API JSON é uma especificação de construção da API, e muitas das APIs com as quais trabalhamos são gravadas usando essa especificação. A API Moshi JSON facilita nossa vida porque a API JSON é convertida em objetos Java significativos. O Retrofit ainda suporta Moshi, e juntos eles funcionam muito bem.
Chuck é um inspetor de HTTP para Android que permite que você explore o histórico HTTP do seu aplicativo no seu celular. O log HTTP é exibido como uma notificação, que pode ser expandida para efetuar login no Chuck e ver informações detalhadas. O uso do Chuck irá, incrivelmente, agradar o departamento de controle de qualidade, pois eles podem ver onde o problema está localizado: no lado Android ou no servidor. Esta biblioteca às vezes pode ajudá-lo mais do que o logcat. Isso ocorre porque seu histórico HTTP será preservado, mesmo que o aplicativo seja fechado inesperadamente, enquanto o logcat se limpa periodicamente após uma reinicialização.

Você provavelmente sabe que o download de imagens no Android é muito difícil. Mesmo o redimensionamento de uma imagem pode ser um desastre com uma OutOfMemoryException
. Glide é uma biblioteca de upload de imagens que fornece uma API de qualidade que permite modificar a imagem como desejar.
GlideApp.with(context) .load(url) .centerCrop() .placeholder(R.drawable.ic_placeholder) .into(imageView)
A biblioteca permite carregar facilmente uma imagem remota no ImageView, definir imagens estáveis, armazenar em cache e dimensionar imagens, etc. Apenas tente fazer tudo isso sem a ajuda do Glide, e você entenderá imediatamente por que está na nossa lista de bibliotecas principais. O Glide ainda suporta algumas alterações padrão comuns, como a criação de uma imagem circular.
ThreeTen é uma biblioteca de datas e horas para o Android. Esta é uma versão portada do JSR-310 que foi incluída no Java 8 como o pacote java.time.*
. Adoramos essa biblioteca porque a API padrão do Calendário Android transforma o trabalho em um pesadelo.
LocalDateTime.now() val localDateTimeString = "2011-12-03T10:15:30" val localDateTime = LocalDateTime.parse(localDateTimeString)
O ThreeTen é muito inferior ao JodaTime em termos de número de métodos e tamanho binário. A API desta biblioteca também é menor que a API JodaTime. Se você já está usando o JodaTime, provavelmente não deve atualizar para o ThreeTen. No entanto, eu recomendo tentar o ThreeTen se você está apenas começando a trabalhar em um novo projeto.
O Timber é uma biblioteca de log poderosa, porém simples, construída sobre a classe Log
do Android. Com sua ajuda, você pode facilmente ligar e desligar a exibição de logs. A biblioteca também oferece excelente suporte para registrar seqüências de caracteres e exceções formatadas. Graças a essas vantagens, o Timber também está incluído em nossa lista de bibliotecas principais que usamos em quase todos os projetos do Android.
Timber.e("Error happened") Timber.w("Your variable value is %s", variable) try { ... } catch (e: Exception) { Timber.e(e) }
O quarto é o ORM oficial para Android e há vários motivos para esse status. Esta biblioteca possui uma API amigável ao usuário, semelhante ao Retrofit. A sala também depende muito de anotações e sintaxe SQL padrão.
@Dao interface MovieDao { @Query("SELECT details FROM movies WHERE id = :id") fun getMovieDetails(id: String): MovieDetails }
Além disso, o Room inclui suporte a Rx e LiveData
por LiveData
, para que você possa usá-lo como quiser. A principal vantagem do Room sobre vários ORMs é sua simplicidade. Muitos ORMs têm uma API muito mais complexa, para a qual você precisará estudar cuidadosamente toda a documentação. Graças à sintaxe padrão do SQL, o Room é extremamente compreensível, o que permite que você comece imediatamente sem gastar muito tempo lendo a documentação.
RxJava é uma implementação Java da API ReactiveX que permite vincular tarefas e eventos assíncronos em sequências observáveis . Os usuários esperam que aplicativos modernos exibam dados em tempo real. Em outras palavras, eles desejam que as informações sejam atualizadas automaticamente. É nesse aspecto que o RxJava é útil.
Ao receber dados em tempo real, torna-se extremamente difícil combinar várias solicitações de API, alternar fluxos e manipular erros. É aqui que o RxJava se demonstra perfeitamente e é por esse motivo que começamos a usar esta biblioteca. Concordo que o RxJava pode parecer confuso e difícil de aprender, mas essa biblioteca definitivamente merece seu tempo. Mesmo depois de mudar para o Kotlin, continuamos a usar o RxJava por causa de suas vantagens. Quando combinado com a API Kotlin, fica ainda melhor graças às funções de extensão adicionais.
Single.zip( /* Execute first API call and retry twice if it fails */ apiService.getMovieActors(id).retry(2), /* Execute second API call and retry twice if it fails */ apiService.getMovieDetails(id).retry(2), /* Receive successful results and merge them into single model */ BiFunction<List<Actor>, MovieDetails, Movie> { actors, details -> Movie(details, actors) } ) /* Execute API calls on IO thread */ .subscribeOn(Schedulers.io()) /* Receive results on MainThread */ .observeOn(AndroidSchedulers.mainThread()) .subscribeBy( onError = { /* Handle error */ }, onSuccess = { /* Handle full movie data */ } )
Tente fazer algo semelhante ao trecho acima usando Java simples. Vamos lá.
O Android KTX é um conjunto de extensões de wrapper para a API do Android no Kotlin que o tornam mais amigável. O principal objetivo desta biblioteca é tornar a API do Android mais conveniente de usar. Ele contém muitos métodos e ótimos novos recursos do Kotlin, como parâmetros nomeados, funções lambda e parâmetros padrão.
view.isVisible = true view.setPadding(padding) view.updatePadding(left = newPadding, right = newPadding) toast("Display test toast") bundleOf { "key1" to item1 "key2" to item2 } sharedPreferences.edit { putString("key1", "value1") putString("key2", "value2") }
O Android KTX é caracterizado pela presença de muitas funções de extensão, e a única maneira de descobrir sobre elas é mergulhar no código da biblioteca para ver como as funções melhoraram a API do Android. O Android KTX simplifica a maneira como você usa a API do Android e, por esse motivo, essa biblioteca deve ser a base de todos os aplicativos Android escritos no Kotlin.
Nossa lista das 10 principais bibliotecas não estaria completa sem o Dagger. Essa biblioteca é uma estrutura de injeção de dependência completamente estática em tempo de compilação. O Dagger, como o RxJava, é realmente difícil de entender (eu tive que gastar algum tempo para entender o exemplo do CoffeeMaker), mas definitivamente merece o tempo e o esforço.
A injeção de dependência é uma maneira de adicionar pequenos componentes a outros modelos com o mínimo de esforço. Por exemplo, se você tiver um modelo de carro, poderá adicionar pneus a ele e substituir facilmente a implementação de pneus no futuro - sem alterar uma única linha de código no modelo de carro.
Ao desenvolver aplicativos mais complexos, você definitivamente não desejará executar tarefas de injeção de dependência, porque a quantidade de código está crescendo rapidamente e se tornando muito complicada para oferecer suporte. O Dagger evita esse problema porque ele cria um gráfico de injeção de dependência em tempo de compilação, através do processamento de anotações.
No ano passado, o Google adicionou um módulo Android Dagger separado, que permite escrever menos código padrão e simplifica a injeção de dependência.
Conclusão
Então, aqui está: nossa lista das 10 principais bibliotecas Android em 2018. Dez ótimas bibliotecas que tornarão o processo de desenvolvimento do Android mais agradável para quem decide usá-las. Quer mais bibliotecas? Aconteceu que em nossa empresa desenvolvemos várias de nossas próprias bibliotecas Android. Você pode se familiarizar com eles:
- MjolnirRecyclerView - adiciona suporte ao cabeçalho, rodapé, componentes de exibição vazia e DiffUtils ao RecyclerView;
- Goldfinger - simplifica a implementação da autenticação de impressão digital;
- DBInspector - exibe e fornece acesso aos bancos de dados do aplicativo;
- Complexify é uma maneira fácil de verificar a qualidade da senha de um usuário;
- Prince of Versions - lida com atualizações de aplicativos dentro do aplicativo.