24/12/2015

Gradle, primeiras impressões

Começei a verificar quais libraries seriam uteis para me ajudar com SQL em Android (o que fica para um próximo post) mas percebi que não tenho a mínima noção em relação ao Gradle.

"Gradle is an open source build automation system that builds upon the concepts of Apache Ant and Apache Maven and introduces a Groovy-based domain-specific language (DSL) instead of the XML form used byApache Maven of declaring the project configuration. Gradle uses a directed acyclic graph ("DAG") to determine the order in which tasks can be run." - https://en.wikipedia.org/wiki/Gradle

Em resumo, Gradle é o atual sistema de build das suas aplicações na IDE Android Studio (http://developer.android.com/sdk/index.html), misturando conceitos de build automático e "sync automatizado" de pacotes/libs de dependências do seu projeto.

Bom, que melhor forma de iniciar os estudos do que em um curso de Gradle?
http://gradle.org/gradle-for-android-training/


Fui tentar me inscrever, mas percebi que não existiam turmas disponíveis para Janeiro... Não... não foi o preço exorbitante que eu gastaria em 4 horas de curso, mesmo existindo livros grátis/"grátis"/pagos:

http://gradle.org/books/
http://www.allitebooks.com/gradle-for-android/
https://www.packtpub.com/application-development/gradle-android

Mas começarei pelo... começo... literalmente:

http://gradle.org/getting-started-android/#developer

Bom, basicamente, existem 2 tipos de build files:
  • Top-Level Build File: Aqui ficam as opções de configuração que são comuns a todos os módulos que fazem parte do seu projeto.
  • Module-Level Build File: Cada módulo possui seu própro arquivo de build, o qual contém ajustes específicos para o mesmo.
Example of how the Gradle Scripts folder looks for a multiple module project


TOP-LEVEL GRADLE BUILD FILE

Todo projeto do Android Studio contém um único arquivo top-level, este arquivo build.gradle é o primeiro arquivo listado na pasta Gradle Scripts e está marcado como Project.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
buildscript {
 
//Project-level Gradle build files utiliza buildscript para definir as dependências dependencies.//
 
    repositories {
 
        jcenter()
    }
 
//Este arquivo depende do repositório do jJCenter.//
 
    dependencies {
 
   classpath 'com.android.tools.build:gradle:1.0.0'
 
//Project é dependente da versão 1.0.0 do plugin Android para o Gradle.//
 
    }
}
 
allprojects {
 
//Define as dependências necessárias para sua aplicação.//
 
    repositories {
        jcenter()
    }
}
 
//Application depende do repositório do jCenter.//


MODULE-LEVEL GRADLE BUILD FILES
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
apply plugin: 'com.android.application'
 
//Como este projeto é uma aplicação Android, o arquivo build.gradle usa o Android plugin.//
 
android {
 
//A secção abaixo ajusta todos os parâmetros específicos de um projeto Android e informa ao Gradle qual versão do Android deveria ser utilizada para a build do projeto.//
 
    compileSdkVersion 21
 
//A API que seu projeto tem como alvo.//
 
    buildToolsVersion "21.1.1"
 
////A versão da ferramenta de build a ser utilizada.//
 
    defaultConfig {
 
        applicationId "com.example.jessica.myapplication"
 
//Define o ID da sua aplicação. Veja que, versões anteriores do plugin de Android utiliza ‘packageName’ ao invés de ‘applicationID.’//
 
        minSdkVersion 16
 
//A versão mínima da API do projeto.//
 
        targetSdkVersion 21
 
//A versão do Android que sua aplicação está focando o desenvolvimento.//
         
versionCode 1
 
        versionName "1.0"
    }
 
    buildTypes {
        release {
 
//‘BuildTypes’ controla como seu app é gerado e empacotado. Se você deseja criar seu próprio variante de geração, é necessário adicioná-lo nesta secção.//
 
            minifyEnabled true
 
//Gradle roda ProGuard durante o processo de geração.//
 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 
//Aplica as configurações padrão do ProGuard do Android SDK.//
 
        }
    }
}
 
dependencies {
 
//Declara as dependencias para o módulo corrente.//
 
   compile fileTree(dir: 'libs', include: ['*.jar'])
 
//Apesar de ser possível adicionar arquivos JAR compilados individualmente, isto pode ser custoso em relação ao tempo, caso haja muitos JARs. Neste exemplo, estamos dizendo ao Gradle para adicionar todos os arquivos JAR na pasta app/libs.//
 
  compile 'com.android.support:appcompat-v7:21.0.3'
 
//Para criar mais dependências, adicione-as no closure de dependencies.//
 
}


OUTROS GRADLE FILES

Além dos arquivos build.gradle, a pasta Gradle Scripts contém alguns outros arquivos Gradle. Na maior parte do tempo, não é necessário modificá-los manualmente pois eles são atualizados automaticamente quando algumas modificações relevantes são feitas ao projeto.

gradle-wrapper.properties (Gradle Version)

Este arquivo permite que outras pessoas compilem seu código, mesmo se eles não possuem Gradle instalado em suas máquinas. Este arquivo checka se a versão correta do Gradle está instalado e faz o download a versão necessário, caso haja necessidade.

settings.gradle

Este arquivo faz referência a todos os módulos que pertencem ao seu projeto. 

Este arquivo contém informações de ajustes para o projeto inteiro. Por padrão ele é vazio, mas é possível aplicar uma grande variedade de propriedades para seu projeto quando adicionando-as neste arquivo.
Este arquivo informa ao plugin do Android Gradle onde é possível encontrar a instalação do Android SDK.
Perceba que local.properties contém informações específicas para o local de instalação do Android SDK. Isto significa que este arquivo não deve ser versionado.

Nenhum comentário:

Postar um comentário