Puoi davvero usare la gradle-retrolamba
dipendenza build gradle per usare Java 8 per lo sviluppo Android.
Di seguito è riportata la guida completa che ho seguito di recente per eseguire espressioni lambda per lo sviluppo di Android. La fonte originale di questa guida è menzionata alla fine.
In questa guida, verrà dimostrato un metodo per portare alcune funzionalità di Java 8 negli strumenti di sviluppo Android, mirando in particolare
all'IDE Eclipse. Tuttavia, i passaggi che verranno descritti in questa guida potrebbero anche essere adattati al nuovo ambiente di sviluppo rivolta di Google, Android Studio. Si basa sull'edizione comunitaria del famoso IDE IntelliJ Idea di JetBrains ed è stato recentemente aggiornato alla sua versione "beta" da Google all'inizio di luglio 2014, poco prima che questa guida fosse scritta. Eclipse rimarrà come importante ambiente di sviluppo, almeno per un po ', e considerando il fatto che la maggior parte dei progetti Android sono stati sviluppati utilizzando Eclipse, un metodo per portare nuove funzionalità Java 8 come le espressioni lambda in ADT sembra essere abbastanza utile per gli sviluppatori.
Lo sviluppo Android si basa su un'implementazione Java personalizzata chiamata Apache Harmony Project, terminata nel 2011. La sintassi Java più comunemente usata nello sviluppo Android è Java 6 (v1.6) e Java 7 (v1.7) è parzialmente supportato su l'edizione KitKat (Android 4.4. +). Pertanto, le funzionalità Java 8 come le espressioni lambda non possono essere utilizzate direttamente nello sviluppo di app Android senza applicare alcune modifiche agli strumenti di sviluppo. Fortunatamente, questi costrutti sono fondamentalmente alcuni miglioramenti dello "zucchero sintattico" che danno agli sviluppatori le carenze di cose come "classi anonime" e possono essere tradotti in classi Java 6 o Java 7.
Un approccio recente per la traduzione di un codice sorgente Java 8 in versioni Java inferiori si chiama RetroLambda . Questa libreria consente agli sviluppatori di eseguire il codice Java 8 con espressioni lambda su Java 7 o anche inferiori. Sfortunatamente, le funzionalità Java 8 diverse dalle espressioni lambda non sono attualmente supportate da RetroLambda ma il concetto di espressioni lambda è il più grande salto sulla piattaforma Java 8 ed è comunque un ottimo strumento per gli sviluppatori Android.
I dettagli su questa libreria sono disponibili sulla sua pagina GitHub:
https://github.com/orfjackal/retrolambda#getting-started
Inoltre, un plug-in Gradle per RetroLambda creato da un altro sviluppatore consente di implementare build basate su Gradle in progetti Java o Android. Tuttavia, lo sviluppatore menziona solo l'integrazione di questo plug-in nell'ambiente Android Studio. I dettagli sono disponibili sulla sua pagina GitHub:
https://github.com/evant/gradle-retrolambda
L'uso di queste infrastrutture all'interno di un ambiente di sviluppo basato su Eclipse non può essere affrontato direttamente ma è fattibile e verrà dimostrato in questa guida.
Preparazione
Questa guida presuppone che il lettore abbia una conoscenza di base dello sviluppo Android e si basa sulla versione 22.6.2 di ADT perché la recente versione 23.0.2 di ADT sembra avere problemi come la creazione di cartelle di layout. I dettagli su questo problema sono disponibili al seguente link:
http://code.google.com/p/android/issues/detail?id=72591
I passaggi di questa guida verranno forniti per una macchina di sviluppo Windows 8.1 a 64 bit , ma possono essere facilmente adattati ad altre piattaforme. Il nuovo sistema di compilazione Gradle
verrà utilizzato per i processi di generazione / pulizia e verrà fornita anche la relativa procedura di installazione. Inoltre, entrambi JDK 8
e JDK 7
devono coesistere sulla macchina di sviluppo. I passaggi indicati di seguito devono essere seguiti per installarli:
- Vai alla pagina di anteprima di accesso anticipato JDK 8 http://jdk8.java.net
- Scarica JDK 8u20 e installalo. L'installazione di JRE 8 non è necessaria e può essere ignorata
- Vai all'ultima pagina di versione stabile di JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- Scarica JDK 7u65 e installalo. L'installazione di JRE 7 non è più necessaria e può essere saltata
- Aggiungi la cartella principale JDK 8 e la cartella JDK 8
bin
alla tua %PATH%
variabile
- Creare una nuova variabile d'ambiente
JAVA_HOME
con il valore del percorso della cartella principale di JDK 8
- Creare di nuovo una nuova variabile d'ambiente
JAVA8_HOME
con il valore del percorso della cartella principale di JDK 8
- Creare una nuova variabile di ambiente
JAVA7_HOME
con il valore del percorso della cartella principale di JDK 7
- Aprire una finestra del terminale ed eseguire il
java -version
comando e verificare che Java 8 sia attivo e in esecuzione
- Esegui il
javac -version
comando nella stessa finestra e verifica che anche il compilatore Java JDK 8 sia attivo e in esecuzione
Ora, ADT-22.6.2 deve essere scaricato dal seguente link:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- Scarica ADT e decomprimi il suo contenuto in una cartella, ad es
D:\adt
- Definire una nuova variabile d'ambiente chiamata
ANDROID_HOME
con il valore del percorso della cartella di installazione di ADT, ad esD:\adt\sdk
- Aggiungi le tue cartelle
Andoid SDK Platform Tools
e Andoid SDK Tools
, ad es. D:\adt\sdk\tools
E D:\adt\sdk\platform-tools
, alla tua %PATH%
variabile
- Se lo desideri, crea un collegamento a IDE Eclipse. Si trova nella cartella di installazione di ADT, ad es
D:\adt\eclipse
- Esegui Eclipse IDE e crea uno spazio di lavoro, ad es
D:\adt\workspace
- Fai clic sul
Android SDK Manager
pulsante che si trova sulla barra degli strumenti
- Seleziona
Android SDK Build tools Rev. 19.1
e Android Support Library
solo. Deseleziona tutto il resto e installa questi due pacchetti.
Se tutto va bene, ADT sarà attivo e funzionante.
Si consiglia vivamente anche l'installazione dei seguenti strumenti:
Supporto Eclipse Kepler Java 8: consente a Eclipse di riconoscere le nuove estensioni di sintassi Java 8 e di eliminare i fastidiosi red dots
editor di codice Java. Potrebbe essere installato tramite Help -> Install New Software
Eclipse. Inserisci http://download.eclipse.org/eclipse/updates/4.3-P-builds/ nel Work with
campo e continua a installarlo.
Grado Nodeclipse / Enide: viene utilizzato principalmente per evidenziare le parole chiave del linguaggio Groovy. Groovy è usato come DSL per gli script di build Gradle. Questo plugin può essere installato tramite Eclipse Marketplace
. Tuttavia, Eclipse in ADT-22.6.2 non viene fornito con Eclipse Marketplace Client
. Pertanto, sarà prima necessario installare Eclipse Marketplace Client
tramite lo Install New Software
strumento in Eclipse. Inserisci http //: download.eclipse.org/mpc/kepler/ nel Work with
campo e continua a installarlo. Dopo l'installazione Eclipse Marketplace Client
, è possibile cercare Nodeclipse/Enide Gradle
nel Eclipse Marketplace Client
e installarlo.
Dispositivo virtuale Genymotion: sostituisce in modo ottimale l'impostazione predefinita Android Virtual Device
fornita con ADT. AVD è fastidiosamente ingombrante e continua a bloccarsi senza motivo. Genymotion ti consente di preparare VD Android usando CyanogenMod
immagini che sono eseguite da Oracle VirtualBox . La sua licenza per singolo utente è gratuita e può essere scaricata da http://www.genymotion.com . È richiesto solo un accesso e può anche essere integrato in Eclipse. I dettagli sono disponibili sotto:
https://cloud.genymotion.com/page/doc/#collapse8
Di seguito è riportato uno screenshot di un dispositivo virtuale CyanogenMod basato su Android 4.3,
Potrebbe essere considerato come un dispositivo Android completo su un personal computer basato su x86 o x64. Per utilizzare i servizi Google come Google PlayStore
su questo dispositivo virtuale, gapps
un'immagine per la versione Android che utilizza deve essere trasferita sul dispositivo. Un'immagine corretta gapps
per il dispositivo potrebbe essere scaricata dal sito Web CyanogenMod:
http://wiki.cyanogenmod.org/w/Google_Apps
L'installazione Gradle è facoltativa poiché è fornita anche dallo stesso SDK Android, ma la sua installazione separata è altamente raccomandata. L'installazione potrebbe essere eseguita seguendo questi passaggi:
App demo
Verrà creata una semplice app per dimostrare l'utilizzo degli strumenti descritti nella sezione precedente. Puoi semplicemente seguire i passaggi indicati di seguito per avere un'idea dell'utilizzo delle espressioni lambda negli Strumenti per sviluppatori Android:
- Esegui Eclipse IDE e crea una nuova app Android selezionando
File -> New -> Other -> Android -> Android Application Project
- Compila il modulo che compare come mostrato di seguito:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- Deseleziona l'
Project -> Build Automatically
opzione di menu
- Fare clic con il tasto destro del mouse sul progetto e selezionare
Properties -> Builders
e deselezionare tutti i costruttori predefiniti forniti da ADT
- Fare clic sul
New
pulsante nella stessa finestra e selezionare Program
e fare clicOK
- Apparirà la finestra di configurazione del nuovo builder. Compila le sue schede come segue:
Main
Scheda della nuova configurazione del generatore
Refresh
Scheda della nuova configurazione del generatore
Environment
Scheda della nuova configurazione del generatore
Build Options
Scheda della nuova configurazione del generatore
- Crea il secondo builder chiamato
Gradle_Post_Build
che utilizza gradle_post_build.cmd
come programma. Tutte le altre impostazioni di questo builder devono essere esattamente le stesse del builder creato in precedenza. Questo builder sarà responsabile della copia degli artefatti creati dal processo di compilazione nella bin
cartella.
- Crea il terzo builder chiamato
Gradle_Cleaner
che utilizza gradle_clean.cmd
come programma. Solo l' Run the builder
impostazione nella scheda finale deve essere impostata come During a Clean
. Tutte le altre impostazioni di questo builder devono essere esattamente le stesse del primo builder. Questo builder sarà responsabile della pulizia degli artefatti creati dal processo di compilazione come suggerisce il nome.
Nuovi costruttori del HelloLambda
progetto
- Fare clic con il tasto destro sul progetto e selezionare
Export
- Seleziona
Android -> Generate Gradle Build Files
e fai clicNext
- Seleziona il progetto nella finestra successiva e fai clic
Finish
- Vai alla cartella principale del tuo progetto ed elimina i file
gradlew
e gradlew.bat
. Elimina anche la gradle
cartella
- Torna a Eclipse e seleziona l'
Project -> Clean
opzione di menu. Compila il modulo che appare come segue:
Clean Project
Finestra
- Fare clic
OK
e attendere fino al completamento del processo di pulizia
- Aggiungi lo snippet di codice Java indicato di seguito subito dopo la chiamata per
setContentView
funzionare nella tua MainActivity
classe:
- Modificare l'inizio del
build.gradle
file fino alla sourceCompatibility
sezione come segue:
- Fare clic con il tasto destro del mouse sul progetto e selezionare l'
Properties -> Java Compiler
opzione e impostare tutti i livelli di conformità su Java 8. Ciò consentirà a Eclipse di riconoscere i nuovi costrutti Java 8 come le espressioni lambda.
- Fai clic
No
nella finestra di notifica
- Fare clic con il tasto destro sul progetto e selezionare
Build project
. Eclipse inizierà a costruire il progetto.
Processo di compilazione
Eclipse sarà ora in grado di riconoscere R.java
e buildConfig.java
file e non mostrerà alcuno red dots
che denoti errori relativi ai file di risorse del progetto.
- Creane uno nuovo
Run Configuration
per la tua piattaforma di destinazione Android facendo clic con il pulsante destro del mouse sul progetto e selezionando Run As -> Run Configurations
. Ad esempio, questa applicazione demo appare come mostrato di seguito su Genymotion VD:
Applicazione HelloLambda
Si può osservare nella LogCat
finestra che lo snippet di codice con una semplice espressione lambda funziona correttamente
Fonte: utilizzo delle espressioni lambda Java 8 negli strumenti per sviluppatori Android