Desde 2013, quando o Android Studio foi lançado durante um evento do Google, que uma relação de amor e ódio começou entre os desenvolvedores Android e a referida ferramenta. Dentre os aspectos que mais incomodam os usuários estão o alto acesso à disco (que resulta em lentidão para quem não tem SSD), a dependência de Internet (que diminui nas últimas versões, mas que ainda existe) e o Gradle. O maldito Gradle.
Mas…o que é o Gradle?
Muitos alunos têm essa dúvida e o post de hoje serve para esclarecer essa questão. A resposta curta e objetiva seria: Gradle é um sistema de build. Um análogo “Andróidico” ao Ant, Maven, NAnt e tantos outros build systems do mercado. Quando você trabalha em projetos complexos com muitas dependências e regras de compilação (caso do Android), um build se faz necessário e a Google optou pelo Gradle.
Mas deixemos a objetividade de lado e vamos à resposta mais longa e mais completa. 🙂
Neste artigo veremos:
- O quê é o Gradle?
- Por que o Google usa ele?
- O que eu posso fazer em um build script?
- Como deixar o Gradle mais rápido?
Vamos lá!
O quê é o Gradle?
Antes do Android Studio, todos usávamos o Eclipse para nossos propósitos de desenvolvimento com Android. A ferramenta não era obrigatória, mas sinceramente nunca conheci alguém que conseguisse gerar o APK do seu app sem ela, uma vez que o processo de build manual é muitíssimo complicado.
Você pode fazer manualmente, via linha de comando, mas é muito complicado pois envolve o uso de diferentes ferramentas (dx, aapt, etc) existentes no SDK. O Eclipse nos economizava tempo e dor de cabeça de ter de lidar com todos esses detalhes através de um build system integrado na IDE.
Para fazer com que todas essas tarefas aconteçam automaticamente você poderia escrever um script shell em Linux ou DOS, certo? Isso é exatamente o que um build system faz, executa scripts pré-criados para automatizar as tarefas de build. Ficou claro agora?
Você já parou para pensar porque a pasta res (onde ficam os resources) fica no mesmo diretório que sua pasta src (onde ficam os source-codes)?
Aqui que o build system entra em cena. O Gradle automaticamente pega todos os arquivos fonte (.java ou .xml), aplica as ferramentas apropriadas (por exemplo, pega as classes Java e converte elas para arquivos dex). e agrupa todos eles em um único arquivo comprimido, nosso amado APK.
Os sistemas de build trabalham com convenções, como por exemplo os arquivos de fontes ficarem na pasta src e os arquivos de resources na pasta res.
O Gradle é um build system moderno que juntou as melhores características de outros sistemas de build em um só. Ele é roda sobre a JVM, o que permite que você escreva código em Java para executar seus scripts durante o build, o que é perfeito para os programadores Java.
Outra coisa bacana do Gradle é que ele funciona baseado em plugins. Isso permite que desenvolvedores de outras linguagens possam criar seus próprios scripts para, durante a compilação, outras tarefas sejam executadas.
Por que o Google usa ele?
Google viu que o Gradle era uma excelente escolha dentre os build systems do mercado principalmente pela sua adaptabilidade através de plugins, o que não obriga os desenvolvedores a aprenderem outras linguagens, como Groovy, diminuindo a curva de aprendizado. Inclusive o Gradle se conecta ao Android Studio através de um plugin que o Google fez.
Você já deve ter visto arquivos build.gradle no seu projeto. É neles que você pode escrever seus scripts para automatizar tarefas. O código que você vê nesses arquivos é código Groovy, mas se você escrever System.out.println(“Hello Gradle!”); vai ver isso impresso no console.
O que eu posso fazer em um build script?
Um exemplo simples e útil pode ser copiar arquivos de uma pasta para outra durante o processo de build. Ou então fazer coisas no banco de dados do app. Verificar coisas na Internet. Validar arquivos estáticos do seu projeto. Exportar uma biblioteca JAR das suas classes Java.
Também é possível colocar instruções no Gradle para gerar diferentes apks na compilação, baseado na tecnologia dos dispositivos, como resolução, por exemplo.
As possibilidades com o Gradle são infinitas.
Como deixar o Gradle mais rápido?
O Android Studio é uma ferramenta muito pesada e recentemente eu escrevi um post ensinando como deixar ele mais rápido. Um dos pontos mais cruciais na velocidade do Android Studio é o tempo de build, que é culpa quase que completamente do…Gradle!
Assim, se você conseguir deixar o Gradle mais rápido, certamente os seus build serão mais rápidos e o Android Studio como um todo rodará melhor. Não quero ficar aqui repetindo as dicas do referido post, mas basicamente vou te passar as principais referentes ao Gradle, sem entrar em detalhes do que cada uma faz, já que essa informação está no post de origem:
- desabilite seu antivírus;
- use as versões mais recentes do Gradle, Build Tools e do Android SDK;
- em Build, Execution e Deployment dentro de Preferences, vá na opção Gradle e marque a opção “Offline mode”;
- na mesma tela, vá na seção Compiler e marque a opção “Compile independent modules in parallel”;
- na mesma seção, escreva “–offline” na caixa “Command Line Options”;
- no arquivo gradle.properties, inclua as seguintes linhas:
1 2 3 4 |
org.gradle.daemon=true org.gradle.parallel=true |
Com isso e mais algumas dicas consegui reduzir os tempos de build na minha máquina de 13 segundos para 4 segundos, legal né?!
Se quiser saber tudo sobre o Android Studio também, dê uma olhada neste tutorial com muitas lições úteis!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.