Autore Topic: [GUIDA] Configurazione di Android Studio per usare Groovy  (Letto 2153 volte)

Offline Illogica

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: +4
    • Google+
    • Mostra profilo
    • Illogica Software
  • Dispositivo Android:
    Caterpillar B15Q / Asus Padfone Infinity / Htc Pyramid / Samsung Galaxy *
  • Play Store ID:
    Illogica Software
  • Sistema operativo:
    Ubuntu 14.04
[GUIDA] Configurazione di Android Studio per usare Groovy
« il: 04 Ottobre 2014, 22:05:52 CEST »
0
Ciao a tutti,
mi permetto di scrivere questa miniguida per la configurazione di Android Studio in modo da poter scrivere programmi in linguaggio Groovy. Più che altro servirà anche a me come promemoria per il futuro...

Attenzione: Groovy per Android è ancora una tecnologia in stadio "beta".
Requisiti: Android Studio 0.8.9 e seguenti.

Perchè Groovy?
Perchè è un linguaggio più conciso e leggibile di Java, si scrive più codice funzionante in meno righe (e quindi teoricamente anche meno tempo...).
Groovy è un linguaggio open source alternativo per la Java Virtual Machine. E' simile a Java, infatti il codice Java è anche codice Groovy valido.

Creiamo un progetto di esempio
Creiamo un nuovo progetto in Android Studio:
- Nella finestra "New Project" inseriamo un nome di progetto a scelta ed il package a scelta. Nessun problema fin qua.
- Quindi andiamo avanti con la procedura guidata scegliendo una "target platform" (la minima verisone di Android sulla quale verrà eseguita l'app). Ho provato con versioni dalla 2.3.3 in su senza problemi.
- Quando dobbiamo scegliere le activity da aggiungere al progetto scegliamo "blank activity", specificando i dettagli a piacere.

Fin qua tutto ok, niente di esotico: abbiamo creato un tradizionale progetto per Android Studio.

Ora, vai con Groovy!
Cominciamo col modificare i file di configurazione di Gradle per dirgli che vogliamo usare Groovy assieme a Java per compilare il nostro progetto.
Gradle ha 2 file di configurazione, entrambi si chiamano "build.gradle" ma uno si trova a livello di progetto (più esterno) ed uno a livello di modulo (più interno).
Modifichiamo il file più esterno, quello a livello di progetto, e facciamolo diventare così:

Codice: [Seleziona]
// 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:0.12.2'
        classpath 'me.champeau.gradle:gradle-groovy-android-plugin:0.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

Un po' di spiegazione:
la direttiva
Codice: [Seleziona]
jcenter() ci permetterà di pescare i plugin che ci servono da qui
Codice: [Seleziona]
classpath 'com.android.tools.build:gradle:0.12.2' specifica la versione del plugin per Android che dobbiamo usare. Grovvy non supporta l'ultima versione del plugin che attualmente è la 0.13.0, ma l'unica differenza con la versione 0.12.2 è sostanzialmente l'uso di Gradle 2.1 che permette di annullare le operazioni di compilazione in corso. Sopravviveremo benissimo senza questa feature.
Codice: [Seleziona]
classpath 'me.champeau.gradle:gradle-groovy-android-plugin:0.3.0' è il plugin per Android che permette di usare Groovy.

Ora mettiamo le mani sul file build.gradle a livello di modulo, quello più interno:

Codice: [Seleziona]
apply plugin: 'com.android.application'
apply plugin: 'me.champeau.gradle.groovy-android'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.example.testapp"  // nome del package dell'app
        minSdkVersion 9
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.codehaus.groovy:groovy:2.4.0-beta-3:grooid'
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile 'com.android.support:support-v4:20.0.0'
}

Abbiamo aggiunto nelle prime due righe le direttive per usare il plugin di Gradle per Android ed il plugin di Groovy per Android.
La riga più importante è questa:
Codice: [Seleziona]
compile 'org.codehaus.groovy:groovy:2.4.0-beta-3:grooid' che effettivamente scarica il plugin da questo repository.

Ultimo passo prima di riuscire a compilare: rinominare l'activity da .java a .groovy.
Android Studio si basa su Intellij Idea, che è probabilmente l'IDE con il miglior supporto per Groovy, quindi non avremo problemi a gestire i file .groovy ed avremo a disposizione tutti gli aiuti che ci piacciono tanto (code autocompletion, eccetera).

Da Java a Groovy

Che me ne faccio di Grovy? In Groovy, molta della sintassi Java diventa opzionale: i return non servono, le parentesi quasi mai, parole chiave come public ed il tipo di dati diventano opzionali. Ecco un esempio:

Java
Codice: [Seleziona]
public class Greeter {
    private String owner;

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public String greet(String name) {
        return "Ciao " + name + ", io sono " + owner;
    }
}

Greeter greeter = new Greeter();
greeter.setOwner("Illogica");

System.out.println(greeter.greet("Pippo"));

Groovy
Codice: [Seleziona]
class Greeter{
    String owner;
   
    String greet(String name) {
        "Ciao ${name}, io sono ${owner}
    }
}

def greeter = new Greeter(owner: "Illogica)
println greeter.greet("Pippo")

Più sintetico, no?
Ovviamente questa è solo la punta dell'iceberg, Groovy dà molta più flessibilità ed espressione al codice eliminando molto "boilerplate code" che francamente, dopo un po' annoia.
Per ulteriori informazioni non esiste ancora una pagina ufficiale ma qui si trovano molte nozioni per iniziare a sperimentare.

E si, io lo sto usando per le mie prossime app.
« Ultima modifica: 05 Ottobre 2014, 11:27:03 CEST da Illogica »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:[GUIDA] Configurazione di Android Studio per usare Groovy
« Risposta #1 il: 05 Ottobre 2014, 10:41:11 CEST »
0
Grazie, molto interessante :-)

Hai per caso fatto due conti su quanto impatta su dimensione apk/numero di metodi (ahimè il limite dei 65k è sempre più vicino per tutti :P)?
« Ultima modifica: 05 Ottobre 2014, 10:42:47 CEST da Ricky` »

Offline Illogica

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: +4
    • Google+
    • Mostra profilo
    • Illogica Software
  • Dispositivo Android:
    Caterpillar B15Q / Asus Padfone Infinity / Htc Pyramid / Samsung Galaxy *
  • Play Store ID:
    Illogica Software
  • Sistema operativo:
    Ubuntu 14.04
Re:[GUIDA] Configurazione di Android Studio per usare Groovy
« Risposta #2 il: 05 Ottobre 2014, 11:30:46 CEST »
+1
Per quando riguarda la dimensione dell'Apk una volta generato il cambiamento è quasi ininfluente, ma sto ancora sperimentando.

Il limite sul numero di metodi può effettivamente presentarsi, in tal caso occorre passare l'apk su Proguard, usando le seguenti direttive:
Codice: [Seleziona]
-dontobfuscate
-keep class org.codehaus.groovy.vmplugin.**
-keep class org.codehaus.groovy.runtime.dgm*
-keepclassmembers class org.codehaus.groovy.runtime.dgm* {
*;
}
-keepclassmembers class ** implements
org.codehaus.groovy.runtime.GeneratedClosure {
*;
}
-dontwarn org.codehaus.groovy.**
-dontwarn groovy**