Desmistificando o uso de bibliotecas no Android

Lucio Maciel
Android Dev BR
Published in
3 min readOct 2, 2015

Um assunto que vira e mexe surge na comunidade, é o uso (ou não) de bibliotecas de terceiros no desenvolvimento de aplicativos, ou seja, bibliotecas que não foram desenvolvidas pelo Google.

As opiniões são as mais diversas, alguns advogando totalmente contra o uso de bibliotecas, por variados motivos, como perda de controle (do código), deixar o programador muito preguiçoso, etc.

Bibliotecas são como ferramentas, e sendo ferramentas, existem as boas e as ruins e é obrigação de um desenvolvedor saber fazer essa diferenciação entre elas. Imagine que o SDK do Android seja uma caixa com as ferramentas básicas, você vai achar lá um martelo, pregos, parafusos, chaves de fenda e phillips, etc. E as bibliotecas são ferramentas mais especializadas ou focadas, como uma serra elétrica, uma parafusadeira. Agora imagine que você precisa montar um móvel e precisará parafusar 50 parafusos, qual ferramenta você escolheria???

Escolha sua ferramenta…

Com código é a mesma coisa, pegue como exemplo o carregamento de imagens em uma lista:

  • Você vai precisar trabalhar com assincronismo/múltiplas threads.
  • Precisa suportar adapters, para não carregar uma imagem em uma View que já foi reciclada.
  • Redimensionamento das imagens para não desperdiçar uso de memória.
  • Cache em memória e disco para melhorar a performance de releitura e economizar os recursos de rede.

Tudo isso é complexo e requer muito código, e por isso mesmo, é difícil de se implementar corretamente.

Ou eu posso escolher a ferramenta certa e utiliza-la em meu projeto, removendo a necessidade de todo esse código que comentei acima, e como todos sabemos, menos código é menos bugs. Claro que podem existir bugs na biblioteca, mas como ela é usada por muitos desenvolvedores, a chance de eles serem encontrados e corrigidos antes de você se deparar com um deles é muito grande. Sem falar que somam-se as experiências de diversos desenvolvedores para se chegar na melhor solução para o problema.

Mas claro que tudo tem 2 lados, e se por um lado temos essa enorme flexibilidade para usarmos ferramentas que nos auxiliem, de outro lado elas adicionam tamanho no seu APK, tanto em tamanho (bytes) como em número de métodos (Dex Limit).

Então o que vale sempre na hora de escolher a ferramenta ideal é bom senso e algumas dicas importantes:

  • Procure sempre bibliotecas bem focadas, que se propõe a resolver um problema bem definido. Ex.: Picasso ou Glide para carregamento de imagens.
  • Procure não sobrepor bibliotecas, Ex: Usar Volley para ler imagens e Retrofit para Web Services.
  • De preferencia para libs open source, ter acesso ao código fonte sempre ajuda a identificar e resolver problemas.
  • Procure conhecer os desenvolvedores e sua reputação na comunidade open-source.
  • Confira o repositório da biblioteca e veja se ela continua sendo mantida, libs sem manutenção podem dar dor de cabeça, especialmente em novas versões do SDK do Android (remoção de métodos que eram Deprecated, mudança de comportamento, etc)
  • Descubra quem usa esse biblioteca. Ela ser utilizada por Apps conhecidos é um bom indicativo.
  • Verifique se a lib possui testes automatizados, eles são importantes para ajudar a manter a qualidade e a confiança na lib.

Sobre o primeiro e segundo pontos (bibliotecas focadas, e não sobrepor funcionalidades), eles são muito importantes para manter o tamanho do seu APK e a quantidade de métodos sobre controle. Se você começa a adicionar libs que tem muitas funcionalidades (Ex. android-annotations) mas usa apenas uma fração do que a lib oferece, talvez seja melhor procurar uma ou mais libs que sejam mais focadas em resolver apenas um problema de cada vez.

E lembrem-se, o fato de não utilizar bibliotecas não vai automaticamente fazer o seu APK ser menor e ter menos métodos, pois você terá que implementar uma boa parte do código que as libs lhe proveem.

--

--

Lucio Maciel
Android Dev BR

Android GDE — I write software. Sometimes I build things...