Build Gradle
Android Studio è il primo IDE di Google interamente dedicato allo sviluppo in ambiente Android. L'IDE di big G si basa sulla piattaforma IntelliJ integrando ulteriori strumenti per lo sviluppo professionale. Uno dei tool più interessanti è il build automation che Android Studio gestisce con Gradle.
Gradle è uno dei software di build automation più evoluti, multipiattaforma e gratuito. Esso consente di gestire tutte le attività di sviluppo software come:
- compilazione: la classica compilazione da sorgente in binario
- packaging: eseguibile, librerie, apk...
- test automatizzati: test approfonditi ed individuazione di bug
- deployment: installazione e configurazione
- documentazione: redazione di opportuni documenti che ne spieghino l’utilizzo e le funzionalità
Inoltre, un software dipende da una serie di fasi a volte complesse la cui automazione solleva il programmatore da notevoli responsabilità come:
- build file: tutte le operazioni che devono essere svolte per ottenere la build vengono raccolte in un file principale
- task: concetto che definisce la singola operazione da svolgere all’interno delle fasi del procedimento di build. Spesso i task sono divisi in micro-task
- dipendenze: sono i framework, librerie o altri progetti, da importare nel nostro progetto
Gradle si basa su di un linguaggio dichiarativo detto Groovy che usa una sintassi simile a Java, che viene compilato dinamicamente in bytecode per la Java Virtual Machine. Essenzialmente è un linguaggio di scripting compilato on-the-fly.
Ogni volta che create un progetto in Android Studio il build system genera automaticamente tutti i files di Gradle necessari. Questi files utilizzano un linguaggio detto DSL per definire la logica di sviluppo ed interagire con gli elementi del plugin di Gradle.
In generale in Android Studio possiamo definire due tipi di file di sviluppo:
- livello top: configurazioni comuni a tutti i moduli di un progetto. Questo tipo di file non viene quasi mai modificato
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }
- livello modulo: ogni modulo ha un proprio file di sviluppo Gradle. Di solito è chiamato app
apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.ldl.myapplication" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' }
Oltre ai file build.gradle, nella cartella Gradle Scripts si trovano altri generi di file che vengono aggiornati automaticamente ogni volta che si aggiunge un cambiamento rilevante al progetto. Di seguito l'elenco dei file:
- gradle-wrapper.properties
- settings.gradle
- gradle.properties
- local.properties
Le dipendenze che si possono usare su di un build.gradle sono o locali o remote. Per aggiungere le dipendenze al progetto Gradle si possono seguire diverse strade.
Si possono aggiungere dipendenze semplicemente spostando un file nella directory Libs del nostro progetto. In automatico sarà generata al dipendenza per Gradle. Un altro modo è quello di modificare manualmente il file build.gradle aggiungendo le proprie dipendenze. Ad esempio per aggiungere una dipendenze per il Google Play Services basta modificare il build.gradle come segue:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.google.android.gms:play-services:6.5.+' }
Come si nota dal codice, i due compile fanno riferimento a dipendenze locali e remote.
Infine, un altro modo di inserire dipendenze in un progetto è utilizzando l'interfaccia grafica di Android Studio. Facendo click col destro del mouse sul modulo dove si vuole aggiungere una dipendenza andremo a selezionare Open Module Settings
Selezionate la tab Dependencies in altro a destra, click sul pulsante + nell'angolo in basso a sinistra, e scegliere una delle tre opzioni
Una volta scelta la vostra dipendenza il file build.gradle si aggiornerà automaticamente.