O panorama do gerenciamento de bibliotecas no Android e iOS

Muitas bibliotecas opensource acabam ganhando uma versão oficial, o que facilita nosso trabalho. Tanto em aplicativos Android quanto iOS tornou-se comum a adoção de menus laterais para determinar os principais itens da navegação da aplicação, e muitas bibliotecas surgiram:

side_menu

Na plataforma Android, atenta a essa tendência, o Google criou o Navigation Drawer dando suporte nativo ao Widget do Side Menu. Mas nem todas as bibliotecas, componentes de UI e ferramentas acabam tendo uma alternativa dentro das bibliotecas padrão. Como fazer?

Recentemente esse não foi o único momento em que o Android saiu na frente. Uma reclamação recorrente dos desenvolvedores da plataforma que utilizavam o plugin do Eclipse era o gerenciamento de dependências: uma aplicação geralmente usava várias Project Libraries, fazendo com que uma aplicação Android resultasse em vários projetos abertos no Eclipse, levando o desenvolvedor até a criar Working Sets na IDE por aplicação. Quando novas versões das bibliotecas eram lançadas, o desenvolvedor tinha um trabalho manual considerável. Esse trabalho não é cotidiano dos desenvolvedores Android no exterior que geralmente usam a IDE de desenvolvimento da JetBrains, o IntelliJ Idea, que possui plugin para desenvolvimento Android e possui uma integração muito boa com o Maven, só que é uma IDE paga cujo uso é bem menor no Brasil.

Ainda em versão beta, o Google lançou o Android Studio, nova IDE de desenvolvimento Android que deverá colocar fim ao suporte ao plugin para Eclipse. A nova IDE está sendo desenvolvida pela JetBrains e será gratuita e terá a mesma integração com o Maven que o IntelliJ Idea. Agora para gerenciar dependências basta fazermos uso do conhecido arquivo pom.xml e usarmos a capacidade do Maven de baixar as dependências, buildar o projeto e gerar o APK.

A plataforma da Apple, conhecida pela produtividade, não podia ficar para trás. Apesar de não possuir ainda um mecanismo oficial de gerenciamento de dependências para os Frameworks utilizados nas aplicações, a Apple teve ajuda da comunidade para atingir o objetivo de tornar fácil a utilização de bibliotecas de terceiros. Como todo Mac já vem com Ruby instalado e existe uma ferramenta chamada Bundler escrita na linguagem para fazer o gerenciamento das bibliotecas Ruby, as chamadas “Gems” pareceu natural para a comunidade aproveitar essa infraestrutura para criar um mecanismo de gerenciamento para as aplicações iOS: nascia o CocaPods.

Para instalá-lo, basta instalar a Gem (sim, é uma biblioteca Ruby!) cocoapods e depois fazer o setup:

gem install cocoapods
pod setup

Para cadastrar uma dependência na aplicação basta criar o arquivo Podfile na raiz da aplicação. O formato do arquivo será bem familiar ao Gemfile que é usado para cadastrar as dependências no Ruby. Abaixo um exemplo no qual estou cadastrando a biblioteca JASidePanels, uma das mais utilizadas para fazer o Side Menu no iOS:

platform :ios, '6.0'
pod 'JASidePanels',  '~> 1.2.1'

Uma vez cadastrada, para baixarmos e instalarmos a dependência em nossa aplicação iOS basta executarmos o comando:

pod install

Agora é só seguir as instruções do desenvolvedor na página em que hospeda o código no GitHub: https://github.com/gotosleep/JASidePanels.

O sucesso foi tanto que o uso do cocoapods tornou-se praticamente obrigatório nas aplicações comerciais para iOS. Para facilitar ainda mais a comunidade ainda criou um site que funciona como um “catálogo” das bibliotecas disponíveis para a plataforma, o http://www.cocoacontrols.com/controls.

Boa parte das bibliotecas mostradas no site é disponibilizada na forma de “Pods”, as demais precisam ser baixadas e incluídas manualmente no projeto e nem todas tem licença que permite o livre uso.

A ideia é tão interessante que a comunidade Android adotou a mesma abordagem! Se você é desenvolvedor Android e também quiser um catálogo visual dos componentes disponíveis para a plataforma, confira o site www.androidviews.net.

Pra quem já escreveu aplicação Java ME eu posso dizer: Nunca foi tão fácil desenvolver para mobile! E você, tem truques para gerenciar todos os artefatos necessários para seus projetos?

7 Comentários

  1. Anderson 16/12/2013 at 11:03 #

    Muito bom mas sempre tem o chato do português: o correto é licença no lugar de licensa.

  2. Paulo Silveira 16/12/2013 at 11:42 #

    @Anderson: chato é quando corrigem sem muita educação, bem diferente de voce Anderson. valeu o toque.

  3. Gaspar 17/12/2013 at 08:12 #

    Aqui utilizamos duas IDE’s para desenvolvimento.
    Uma delas o IntelliJ onde o custo beneficio dentre o custo da licença e de tudo que a IDE te oferece chega a ser irrisório.
    Mas também utilizamos o eclipse com maven para projetos android, onde tudo funciona perfeitamente.

    Para controlar nossas dependências internas e agilizar o download de dependências externas utilizamos o Nexus.

    Devemos lembrar que a utilização do Hudson ou Jenkins é fundamental. Criamos toda estrutura de trunk/branches/tags direto por ele e fazendo deploys continuos de nossa aplicação, onde aqui no nosso caso a equipe de testes esta livre para gerar deploys.

  4. alan rodrigues 18/12/2013 at 09:43 #

    sabe, gosto muito do blog, mas gostaria de ver um post sobre um assunto meio polemico.

    gostaria de ver um post sobre usar o hibernate para deixar o banco igual as classes ou fazer as classes ficarem iguais ao banco manualmente.

  5. Arthur Carvalho 19/12/2013 at 08:51 #

    Gaspar:

    Cara, sou dev java e adoro o maven. Entretanto, tentei utiliza-lo pra projetos android e foi um parto.

    Na verdade, o parto foi na hora de usar o Eclipse junto com o Maven, pela linha de comando funciona bem.

  6. Rodrigo Vieira Pinto 23/12/2013 at 07:27 #

    Por falar em chato….

    bibiliotecas, no título do texto.

    🙂

  7. Gustavo Bitencourt 14/05/2014 at 16:13 #

    Muito bom seu artigo Erich Egert, parabéns!

    Não tinha conhecimento do site Androidviews, excelente!

Deixe uma resposta