È possibile utilizzare Java 8 per lo sviluppo di Android?


Cercando sul web, non è chiaro se Java 8 è supportato per lo sviluppo di Android o meno.

Prima di scaricare/configurare Java 8, qualcuno può indicarmi qualsiasi documentazione "ufficiale" che dica che Java 8 è o non è supportato per lo sviluppo di Android.

Author: Enzokie, 2014-04-27

21 answers

Java 8

Android supporta tutte le funzionalità della lingua Java 7 e un sottoinsieme delle funzionalità della lingua Java 8 che variano a seconda della versione della piattaforma.

Per verificare quali funzionalità di java 8 sono supportate

Usa le funzionalità del linguaggio Java 8

Abbiamo deciso di aggiungere il supporto per le funzionalità del linguaggio Java 8 direttamente nell'attuale set di strumenti javac e dx e deprecare la toolchain Jack. Con questa nuova direzione, strumenti e plugin esistenti dipendono dalla classe Java il formato del file dovrebbe continuare a funzionare. Andando avanti, le funzionalità della lingua Java 8 saranno supportate nativamente dal sistema di build Android. Puntiamo a lanciare questo come parte di Android Studio nelle prossime settimane, e abbiamo voluto condividere questa decisione in anticipo con voi.

Futuro di Java 8 Supporto funzionalità di lingua su Android

Utenti Eclipse:

Per i vecchi sviluppatori che preferiscono Eclipse, google interrompe il supporto di Eclipse Android Developer tools

Se hai installato Java 8 JDK, quindi provalo, se compaiono problemi prova a impostare il compilatore come 1.6 in Eclipse dal menu finestra → PreferenzeJavaCompilatore. Anche Java 7 funziona:

Preferenze Eclipse - > Java - > Compilatore

Java 7 o superiore è necessario se si sta prendendo di mira Android 5.0 e superiore.

Installa più JDK e prova.

 164
Author: Eng. Samer T, 2017-06-21 22:22:01

AGGIORNAMENTO 2017/11/04-Android Studio 3.0 ha ora il supporto nativo per Java 8. gradle-retrolambda ora non è più necessario. Vedere https://developer.android.com/studio/write/java8-support.html

Il link qui sopra include anche le istruzioni di migrazione se si utilizza gradle-retrolambda. Risposta originale qui sotto:


Android non supporta Java 8. Supporta solo fino a Java 7 (se hai kitkat) e ancora non ha invokedynamic, solo il nuovo zucchero della sintassi.

Se vuoi usare lambda, una delle principali caratteristiche di Java 8 in Android, puoi usare gradle-retrolamba . È una dipendenza di build gradle che integra retrolambda, uno strumento che converte il bytecode Java 8 in Java 6/7. Fondamentalmente, se si imposta il compilatore in Android Studio per compilare il bytecode Java 8, consentendo così lambda, lo convertirà in bytecode Java 6/7 che a sua volta viene convertito in bytecode dalvik. Si tratta di un hack per se volete provare alcuni JDK 8 caratteristiche in Android al posto del sostegno ufficiale.

 334
Author: ekcr1, 2017-11-03 22:30:29

È infatti possibile utilizzare gradle-retrolamba gradle build dependency per utilizzare Java 8 per lo sviluppo di 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, un metodo per portare alcune Java 8 caratteristiche in Verranno dimostrati gli strumenti di sviluppo Android, con l'obiettivo specifico di Eclipse IDE. Tuttavia, passi che sarà descritto in questa guida potrebbe anche essere adattato allo sviluppo di nuova rivolta di Google ambiente, Android Studio. Si basa sull'edizione comunitaria di popolare IntelliJ Idea IDE di JetBrains ed è stato recentemente aggiornato alla sua versione’ beta ' da parte di Google all'inizio di luglio 2014, leggermente prima che questa guida fosse scritta. Eclipse rimarrà come il prominente ambiente di sviluppo, almeno per un po', e considerando il fatto che la maggior parte dei progetti Android sono stati sviluppato utilizzando Eclipse, a metodo per portare nuove funzionalità Java 8 come espressioni lambda in ADT sembra essere abbastanza utile per gli sviluppatori.

Lo sviluppo di Android si basa su un'implementazione Java personalizzata chiamata Progetto Apache Harmony che è stato terminato nel 2011. Il più la sintassi Java comunemente usata nello sviluppo di Android è Java 6 (v1.6) e Java 7 (v1.7) è anche parzialmente supportato sull'edizione KitKat (Androide 4.4.+). Pertanto, Java 8 caratteristiche come lambda espressione non può essere utilizzato direttamente nello sviluppo di app Android senza l'applicazione di alcune modifiche negli strumenti di sviluppo. Fortunatamente, questi i costrutti sono fondamentalmente alcuni miglioramenti dello "zucchero sintattico" che dare agli sviluppatori le carenze di cose come "classi anonime" e possono essere tradotti in Java 6 o Java 7 classi.

Un approccio recente per tradurre un codice sorgente Java 8 in Java inferiore versioni si chiama RetroLambda . Questa libreria rende gli sviluppatori corrono Codice Java 8 con espressioni lambda su Java 7 o anche inferiore. Sfortunatamente, le funzionalità di Java 8 diverse dalle espressioni lambda non lo sono supportato da RetroLambda per ora ma il concetto di espressioni lambda è il più grande salto sulla piattaforma Java 8 ed è un ottimo strumento per Sviluppatori Android in ogni caso.

I dettagli su questa libreria possono essere trovati sulla sua pagina GitHub:

Https://github.com/orfjackal/retrolambda#getting-started

Inoltre, un plugin Gradle per RetroLambda creato da un altro sviluppatore consente di implementare build basate su Gradle in Java o Android Progetto. Tuttavia, lo sviluppatore menziona solo l'integrazione di questo plugin in ambiente Android Studio. I dettagli possono essere trovati sul suo Pagina GitHub:

Https://github.com/evant/gradle-retrolambda

Utilizzo di queste infrastrutture all'interno di uno sviluppo basato su Eclipse l'ambiente non può essere affrontato direttamente ma è fattibile e lo sarà dimostrato in tutta questa guida.

Preparazione

Questa guida presuppone che il lettore abbia una conoscenza di base dello sviluppo di Android e si basa sulla versione ADT 22.6.2 perché la recente versione ADT 23.0.2 sembra avere problemi come la creazione di cartelle di layout. Dettagli su questo problema possono essere trovati sotto il seguente collegamento:

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, 64-bit ma possono essere facilmente adattati ad altre piattaforme. Il nuovo sistema di compilazione Gradle verrà utilizzato per i processi di compilazione/pulizia e verrà fornita anche la sua procedura di installazione. Inoltre, sia JDK 8 che JDK 7 devono coesistere sulla macchina di sviluppo. I passaggi indicati di seguito devono essere seguiti per installare loro:

  • Vai alla pagina di anteprima di accesso anticipato JDK 8 http://jdk8.java.net
  • Scarica JDK 8u20 e installalo. JRE 8 l'installazione non è necessaria e può essere saltata
  • Vai alla pagina dell'ultima versione stabile di JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
  • Scarica JDK 7u65 e installalo. JRE 7 l'installazione non è ancora necessaria e può essere saltata
  • Aggiungi JDK 8 cartella home e cartella JDK 8 bin nella variabile %PATH%
  • Crea una nuova variabile d'ambiente JAVA_HOME con il valore del percorso della cartella home di JDK 8
  • Crea di nuovo una nuova variabile d'ambiente JAVA8_HOME con il valore del percorso della cartella home di JDK 8
  • Crea una nuova variabile d'ambiente JAVA7_HOME con il valore del percorso della cartella home di JDK 7
  • Aprire una finestra di terminale ed eseguire il comandojava -version e verificare che Java 8 sia attivo e funzionante
  • Esegui javac -version comando nella stessa finestra e verificare che il compilatore Java JDK 8 sia attivo e funzionante

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 esempio D:\adt
  • Definire una nuova variabile di ambiente chiamata ANDROID_HOME con il valore del percorso della cartella di installazione di ADT, ad esempio D:\adt\sdk
  • Aggiungi le cartelle Andoid SDK Platform Tools e Andoid SDK Tools, ad esempio D:\adt\sdk\tools e D:\adt\sdk\platform-tools, alla variabile %PATH%
  • Crea una scorciatoia per Eclipse IDE se ti piace. Si trova nella cartella di installazione di ADT, ad esempio D:\adt\eclipse
  • Esegui Eclipse IDE e crea un'area di lavoro, ad esempio D:\adt\workspace
  • Fare clic sul pulsante Android SDK Manager che si trova sulla barra degli strumenti
  • Selezionare solo Android SDK Build tools Rev. 19.1 e Android Support Library. Deseleziona tutto il resto e installa questi due pacchetti.

Se tutto va bene, ADT sarà installato e funzionante.

L'installazione dei seguenti strumenti è anche altamente raccomandato:

  • Eclipse Kepler Java 8 Supporto: Rende Eclipse riconoscere nuove estensioni di sintassi Java 8 e ti fa sbarazzarsi di fastidioso red dots nel vostro editor di codice Java. Potrebbe essere installato tramite Help -> Install New Software in Eclipse. Inserire http://download.eclipse.org/eclipse/updates/4.3-P-builds / nel campo Work with e continuare a installalo.

  • Nodeclipse / Enide Gradle: E ' utilizzato principalmente per evidenziare le parole chiave di lingua Groovy. Groovy è usato come DSL per gli script di compilazione Gradle. Questo plugin può essere installato tramite Eclipse Marketplace. Tuttavia, Eclipse all'interno di ADT-22.6.2 non viene insieme a Eclipse Marketplace Client. Pertanto, dovrai prima installare Eclipse Marketplace Client tramite lo strumento Install New Software in Eclipse. Immettere http//: download. eclipse.org/mpc/kepler/ nel campo Work with e continuare a installarlo. Dopo aver installato Eclipse Marketplace Client, si può cercare Nodeclipse/Enide Gradle nel Eclipse Marketplace Client e installarlo.

  • Genymotion Dispositivo virtuale: Si tratta di un ottimo sostituto del default Android Virtual Device che viene fornito con ADT. AVD è fastidiosamente ingombrante e continua a bloccarsi senza motivo. Genymotion ti fa preparare le VD di Android usando CyanogenMod immagini che vengono eseguite da Oracle VirtualBox . La sua licenza per utente singolo è gratuita e può essere scaricata da http://www.genymotion.com. Solo un accesso è richiesto e può anche essere integrato in Eclipse. I dettagli possono essere trovati sotto:

Https://cloud.genymotion.com/page/doc/#collapse8

Di seguito è riportato uno screenshot di un dispositivo virtuale CyanogenMod basato su Android 4.3,

inserisci qui la descrizione dell'immagine

Potrebbe essere considerato come un dispositivo Android completamente fledge in esecuzione su un personal computer basato su x86 o x64. Per utilizzare i servizi Google come Google PlayStore su questo dispositivo virtuale, un'immagine gapps per Versione di Android che utilizza deve essere balenato sul dispositivo. Un'immagine gapps corretta per il dispositivo potrebbe essere scaricata dal sito Web CyanogenMod:

Http://wiki.cyanogenmod.org/w/Google_Apps

L'installazione di Gradle è facoltativa poiché è fornita anche da Android SDK stesso, ma la sua installazione separata è altamente raccomandata. L'installazione di esso potrebbe essere effettuata seguendo questi passaggi:

  • Vai al sito web Gradle: http://www.gradle.org/

  • Clicca Downloads

  • Sotto Previous Releases scegliere la versione 1.10 e scaricare gradle-1.10-all.zip o gradle-1.10-bin.zip
  • Decomprimere il suo contenuto in una cartella, ad esempio D:\adt\gradle
  • Definire una nuova variabile di ambiente chiamata GRADLE_HOME con il valore del percorso della cartella di installazione Gradle, ad esempio D:\adt\gradle
  • Aggiungi la cartella dei binari Gradle, ad esempio D:\adt\gradle\bin, alla variabile %PATH%
  • Apre un finestra terminale ed eseguire il comando gradle -v e verificare che sia attivo e funzionante Se sei arrivato fino a questo punto con successo, significa che sei pronto per creare la tua prima app Android utilizzando le funzionalità Java 8.

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 ottenere una panoramica sull'utilizzo delle espressioni lambda in Android Developer Strumenti:

  • Esegui Eclipse IDE e crea una nuova app Android selezionando File -> New -> Other -> Android -> Android Application Project
  • Compila il modulo che viene visualizzato come mostrato di seguito:

inserisci qui la descrizione dell'immagine

  • Basta fare clic sul pulsante Next nei seguenti moduli e fare clic sul pulsante Finish sull'ultimo. Attendi che ADT finisca di caricare il progetto
  • Fare clic con il pulsante destro del mouse sul progetto e selezionare New -> Folder e denominarlo builders
  • Fare clic con il pulsante destro del mouse sulla cartella gen (Generated Java Files) ed eliminarla. Gradle genererà gli stessi file per noi presto e li aggiungeremo nel progetto s build path. The la cartella gen creata dal generatore Ant predefinito non è più necessaria e gli artefatti in quella cartella saranno obsoleti
  • Crea i seguenti file batch nella cartella builders:

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Compila questi file batch come segue:

Gradle_build.cmd:

inserisci qui la descrizione dell'immagine

Gradle_post_build.cmd:

inserisci qui la descrizione dell'immagine

Gradle_clean.cmd:

inserisci qui la descrizione dell'immagine

  • Deseleziona Project -> Build Automatically opzione di menu
  • Fare clic con il pulsante destro del mouse sul progetto e selezionare Properties -> Builders e deselezionare tutti i builder predefiniti forniti da ADT
  • Fare clic sul pulsante New nella stessa finestra e selezionare {[59] } e fare clic su OK
  • Apparirà la nuova finestra di configurazione del builder. Compila le sue schede come segue:

Main Scheda della nuova configurazione del Builder

inserisci qui la descrizione dell'immagine

Refresh Scheda della nuova configurazione del Builder

inserisci qui la descrizione dell'immagine

Environment Scheda della nuova configurazione del Builder

inserisci qui la descrizione dell'immagine

Build Options Scheda del nuovo Costruttore Configurazione

inserisci qui la descrizione dell'immagine

  • Crea il secondo generatore 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 costruttore sarà responsabile della copia degli artefatti creati dal processo di compilazione nella cartella bin.
  • Crea il terzo generatore chiamato Gradle_Cleaner che utilizza gradle_clean.cmd come programma. Solo l'impostazione Run the builder nella scheda finale deve essere impostata come During a Clean. Tutto altre impostazioni di questo builder devono essere esattamente le stesse del primo builder. Questo costruttore sarà responsabile della pulizia degli artefatti creati dal processo di compilazione come suggerisce il nome.

Nuovi costruttori del progetto HelloLambda

inserisci qui la descrizione dell'immagine

  • Fare clic con il pulsante destro del mouse sul progetto e selezionare Export
  • Selezionare Android -> Generate Gradle Build Files e fare clic su Next
  • Selezionare il progetto nella finestra successiva e fare clic su Finish
  • Vai al tuo cartella principale del progetto ed eliminare i file gradlew e gradlew.bat. Elimina anche la cartella gradle
  • Torna a Eclipse e seleziona l'opzione di menu Project -> Clean. Compila il modulo che si presenta come segue:

Clean Project Finestra

inserisci qui la descrizione dell'immagine

  • Fare clic su {[60] } e attendere fino al completamento del processo di pulizia
  • Aggiungi lo snippet di codice Java indicato di seguito subito dopo la chiamata alla funzione setContentView nel tuo MainActivity classe:

inserisci qui la descrizione dell'immagine

  • Modificare l'inizio del file build.gradle fino alla sezione sourceCompatibility come segue:

inserisci qui la descrizione dell'immagine

  • Fare clic con il pulsante destro del mouse sul progetto e selezionare l'opzione Properties -> Java Compiler e impostare tutti i livelli di conformità su Java 8. Ciò renderà Eclipse riconoscere nuovi costrutti Java 8 come espressioni lambda.
  • Fare clic su No nella finestra di notifica
  • Fare clic con il pulsante destro del mouse sul progetto e selezionare Build project. Eclipse inizierà costruire il progetto.

Processo di compilazione inserisci qui la descrizione dell'immagine

  • Fare clic con il pulsante destro del mouse sul progetto e andare su Properties -> Java Build Path. Aggiungi le seguenti cartelle al percorso di compilazione (mostrato anche nell'immagine sotto):

    • build\source\buildConfig\debug
    • build\source\r\debug

inserisci qui la descrizione dell'immagine

Eclipse sarà ora in grado di riconoscere i file R.java e buildConfig.java e non visualizzerà alcun red dots che denoti errori relativi ai file di risorse del progetto.

  • Crea un nuovo Run Configuration per la tua piattaforma di destinazione Android facendo clic con il pulsante destro del mouse sul progetto e quindi selezionando Run As -> Run Configurations. Per esempio, questa applicazione demo si presenta come mostrato di seguito sul Genymotion VD:

Applicazione HelloLambda

inserisci qui la descrizione dell'immagine

È possibile osservare nella finestra LogCat che il frammento di codice con una semplice espressione lambda funziona correttamente

inserisci qui la descrizione dell'immagine

Fonte: Utilizzo di Java 8 Lambda Espressioni in Strumenti di sviluppo Android

 97
Author: Sufiyan Ghori, 2015-02-08 12:45:57

Segui questo link per nuovi aggiornamenti. Usa le funzionalità del linguaggio Java 8

Vecchia risposta

A partire da Android N anteprima rilasciare il supporto Android limitato caratteristiche di Java 8 vedere Java 8 Caratteristiche del linguaggio

Per iniziare a utilizzare queste funzionalità, è necessario scaricare e configurare Android Studio 2.1 e Android N Preview SDK, che include richiesto Jack toolchain e aggiornato Plugin Android per Gradle. Se tu non hai ancora installato Android N Preview SDK, vedi Configurazione per lo sviluppo per Android N.

Funzionalità e API del linguaggio Java 8 supportate

Android attualmente non supporta tutte le funzionalità della lingua Java 8. Tuttavia, le seguenti funzionalità sono ora disponibili durante lo sviluppo di app targeting per l'anteprima di Android N:

Metodi di interfaccia predefiniti e statici

Lambda espressioni (disponibile anche a livello API 23 e inferiore)

Annotazioni ripetibili

Riferimenti al metodo (disponibile anche a livello API 23 e inferiore)

Ci sono alcune funzionalità aggiuntive di Java 8 che supportano Android, puoi vedere i dettagli completi da Java 8 Language Features

Aggiornamento

Nota: Android N basa la sua implementazione delle espressioni lambda su classi anonime. Questo approccio consente loro per essere indietro compatibile ed eseguibile su versioni precedenti di Android. Testare espressioni lambda sulle versioni precedenti, ricordarsi di andare al tuo costruire.file gradle e imposta compileSdkVersion e targetSdkVersion su 23 o inferiore.

Aggiornamento 2

Ora Android studio 3.0 versione stabile supporto Java 8 librerie e Java 8 caratteristiche del linguaggio (senza il compilatore Jack).

 42
Author: , 2017-10-26 07:17:29

Android utilizza un Java che si dirama da Java 6.

A partire dalla versione 19 di Android SDK, è possibile utilizzare le funzionalità di Java 7 in questo modo. Nessun supporto completo per Java 8 (ancora).

 19
Author: chaqke, 2016-11-21 23:40:56

Sì, Android supporta Java 8 ora (24.1.17)

Ora è possibile

Ma dovrai far funzionare la tua rom del dispositivo su java 1.8 e abilitare "jackOptions" per eseguirlo. Jack è il nome del nuovo compilatore Android che esegue Java 8

Https://developer.android.com/guide/platform/j8-jack.html

Aggiungi queste righe a build_gradle

    android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Java 8 sembra essere il motore java in esecuzione di Android studio 2.0, Ma ancora non accetta il sintassi di Java 8 dopo aver controllato, e non è possibile scegliere un compilatore da Android studio ora. Tuttavia, puoi utilizzare il plugin scala se hai bisogno di un meccanismo di programmazione funzionale nel tuo client Android.

inserisci qui la descrizione dell'immagine

 18
Author: sivi, 2017-01-24 18:37:10

Android supporta UFFICIALMENTE Java 8 a partire da Android N.

Gli annunci di funzionalità sono qui, l'annuncio della lingua Java 8 è:

Migliorato Java 8 language support - Siamo entusiasti di portare Java 8 caratteristiche della lingua per Android. Con il compilatore Jack di Android, puoi ora usa molte popolari funzionalità del linguaggio Java 8, tra cui lambda e più, sulle versioni di Android nel lontano Gingerbread. Le nuove funzionalità contribuire a ridurre il codice boilerplate. Per esempio, lambda può sostituire classi interne anonime quando forniscono ascoltatori di eventi. Alcuni Java 8 caratteristiche del linguaggio - come metodi predefiniti e statici, flussi e le interfacce funzionali -- sono ora disponibili anche su N e versioni successive. Con Jack, non vediamo l'ora di seguire il linguaggio Java più da vicino pur mantenendo la compatibilità con le versioni precedenti.

 14
Author: Jay, 2016-03-10 05:09:54

Java nativo 8 arriva su Android! Finalmente!

Rimuovere il plugin Retrolambda e il blocco retrolambda da ciascun modulo costruire.file gradle:

Per disabilitare Jack e passare alla toolchain predefinita, è sufficiente rimuovere jackOptions blocca dalla build del tuo modulo.file gradle

Per iniziare a utilizzare le funzionalità della lingua Java 8 supportate, aggiorna il plugin Android alla versione 3.0.0 (o superiore)

A partire da Android Studio 3.0, le funzionalità della lingua Java 8 sono ora nativamente supportato da Android:

  • Espressioni lambda
  • Riferimenti al metodo
  • Digitare annotazioni (attualmente le informazioni di annotazione di tipo non sono disponibili in fase di runtime ma solo in fase di compilazione);
  • Ripetere le annotazioni
  • Metodi di interfaccia predefiniti e statici (a livello API 24 o superiore, nessun supporto per l'esecuzione istantanea);

Anche dal livello min API 24 le seguenti API Java 8 sono disponibile:

  • java.util.flusso
  • java.util.funzione
  • java.lang.FunctionalInterface
  • java.lang.annotazione.Ripetibile
  • java.lang.riflettere.AnnotatoeLemento.Per maggiori informazioni clicca qui]}
  • java.lang.riflettere.Metodo.isDefault ()

Aggiungi queste righe alla build del modulo dell'applicazione.gradle per informare il progetto del livello linguistico:

 android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }

Disabilita il supporto per le funzionalità della lingua Java 8 aggiungendo quanto segue a il tuo gradle.proprietà file:

android.enableDesugar=false

Il gioco è fatto! Ora puoi usare native java8!

 12
Author: Dhaval Jivani, 2017-10-27 04:03:16

Possiamo usare Java 8 usando:

  1. In build.gradle (Progetto: myProject) aggiungi seguente

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
    
  2. In build.gradle (Modulo: myModule) aggiungi seguente

    apply plugin: 'me.tatarka.retrolambda'
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
 11
Author: Vishal Raj, 2016-01-03 12:31:21

Android Studio 3.0 ha iniziato a fornire il supporto integrato per alcune delle funzionalità del linguaggio Java 8, che sono:

  • Espressioni lambda
  • Riferimenti al metodo
  • Digitare annotazioni (le informazioni sono disponibili in fase di compilazione, ma non in fase di runtime)
  • Ripetere le annotazioni
  • Metodi di interfaccia predefiniti e statici

Anche a partire dal livello API 24 le seguenti API Java 8 sono disponibile:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
  • java.lang.reflect.Method.isDefault()

Oltre a ciò, il supporto try-with-resources è stato esteso a tutti i livelli API di Android.

Altre funzionalità di Java 8 sono promesse per essere aggiunte in futuro.

Per iniziare a utilizzare le funzionalità della lingua Java 8 supportate, aggiornare Android plugin per 3.0.0-alpha1 (o superiore) e aggiungere quanto segue al vostro costruzione del modulo.gradle file:

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Per maggiori dettagli visita:
https://developer.android.com/studio/write/java8-support.html

 7
Author: Idolon, 2017-07-05 10:52:10

Quando ho fatto questa domanda quasi 2 anni fa la risposta era davvero "ufficialmente" no, ma come sottolineato dalla risposta di ekcr1 è possibile ottenere una delle funzionalità più attese (lambda) per funzionare se si utilizza retrolamba. All'epoca stavo ancora usando eclipse, poiché Android Studio era in modalità "anteprima", quindi non ho mai seguito questo percorso.

Oggi, penso che la risposta" ufficiale " sia ancora no, e mentre retrolamba sembra ancora un buon modo per andare, c'è un'altra opzione per quelli disposti a scendere un percorso un po ' "non ufficiale" può prendere, vale a dire Kotlin.

Oggi Kotlin ha raggiunto 1.0.0. Per coloro che non hanno familiarità con Kotlin, maggiori informazioni possono essere trovate sul loro sito web trovato qui:

Https://kotlinlang.org

O guardare questo video utube di un discorso tenuto da Jake Wharton

Https://www.youtube.com/watch?v=A2LukgT2mKc

 5
Author: nPn, 2016-02-16 00:47:23

Ultime notizie:

Google annuncia che con Android N e Android Studio 2.1+, la piattaforma supporterà Java 8. È stata rilasciata anche la versione stabile di studio 2.1.

Finalmente possiamo usare espressioni lambda. Non più filtro elenco in ciclo for. Horeeey.

 4
Author: asozcan, 2016-04-27 07:56:38

Aggiungi questa configurazione di configurazione.gradle e sincronizza gradle:

android {
    ...
    defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        // or
        //sourceCompatibility 1.8
        //targetCompatibility 1.8
    }
}
 4
Author: Ahmad Aghazadeh, 2016-09-15 09:59:36

Google ha appena annunciato che Java 8 sarà supportato nativamente da Android e che la toolchain Jack deprecerà:

Abbiamo deciso di aggiungere il supporto per le funzionalità del linguaggio Java 8 direttamente nell'attuale set di strumenti javac e dx e deprecare la toolchain Jack. Con questa nuova direzione, gli strumenti e i plugin esistenti dipendenti dal formato del file di classe Java dovrebbero continuare a funzionare. Andando avanti, le funzionalità della lingua Java 8 saranno supportate nativamente dal sistema di build Android. Puntiamo a lanciare questo come parte di Android Studio nelle prossime settimane, e abbiamo voluto condividere questa decisione in anticipo con voi.

Maggiori informazioni qui: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

 2
Author: stamanuel, 2017-03-15 07:38:24

Sì. Useremo Java 8 presto!

Abbiamo deciso di aggiungere il supporto per le funzionalità del linguaggio Java 8 direttamente nell'attuale set di strumenti javac e dx e deprecare la toolchain Jack. Con questa nuova direzione, gli strumenti e i plugin esistenti dipendenti dal formato del file di classe Java dovrebbero continuare a funzionare. Andando avanti, le funzionalità della lingua Java 8 saranno supportate nativamente dal sistema di build Android. Stiamo puntando a lanciare questo come parte di Android Studio nelle prossime settimane, e noi volevo condividere questa decisione presto con voi.

Https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

 2
Author: Ajay S, 2017-03-16 06:18:33

Ho scritto una risposta simile a una domanda simile su Stack Overflow, ma qui fa parte di quella risposta.

Android Studio 2.1:

La nuova versione di Android Studio (2.1) ha il supporto per Java 8 caratteristiche. Ecco un estratto dal Android Developers blogspot post:

... Android Studio 2.1 rilascio include il supporto per il nuovo compilatore Jack e il supporto per Java 8.

...

Da usare Java 8 caratteristiche del linguaggio quando si sviluppa con la N Developer Preview, è necessario utilizzare il compilatore Jack. La procedura guidata Nuovo progetto [File→ Nuovo→ Progetto] genera le configurazioni corrette per i progetti destinati al N.


Prima di Android Studio 2.1:

Android non supporta Java 1.8 ancora (supporta solo fino a 1.7), quindi non è possibile utilizzare Java 8 caratteristiche come lambda.

Questa risposta fornisce maggiori dettagli sulla compatibilità di Android Studio; esso stati:

Se si desidera utilizzare lambda, una delle principali caratteristiche di Java 8 in Android, è possibile utilizzare gradle-retrolamba

Se vuoi saperne di più sull'utilizzo gradle-retrolambda, questa risposta fornisce molti dettagli su come farlo.

 1
Author: Farbod Salamat-Zadeh, 2017-05-23 11:55:10

Ho pensato di pubblicare una risposta aggiornata per coloro che cercano qualcosa di un po ' più attuale.

Attualmente Android e Android Studio supportano un sottoinsieme di funzionalità Java 8. Secondo la documentazione di Android che si trova sul loro sito web, Google dice:

Il supporto per le funzionalità del linguaggio Java 8 richiede un nuovo compilatore chiamato Jack. Jack è supportato solo su Android Studio 2.1 e versioni successive. Quindi, se si desidera utilizzare le funzionalità della lingua Java 8, è necessario usa Android Studio 2.1 per creare la tua app.

Se hai già installato Android Studio, assicurati di eseguire l'aggiornamento alla versione più recente facendo clic su Guida > Verifica aggiornamenti (su Mac, Android Studio > Verifica aggiornamenti). Se non hai già l'IDE installato sulla tua workstation, scarica Android Studio qui.

Funzionalità e API del linguaggio Java 8 supportate

Android non supporta tutte le funzionalità della lingua Java 8. Tuttavia, le seguenti caratteristiche sono disponibili durante lo sviluppo di app per Android 7.0 (livello API 24):

  • Metodi di interfaccia predefiniti e statici Espressioni Lambda (disponibili anche su API di livello 23 e inferiore)
  • Annotazioni ripetibili
  • Riferimenti ai metodi (disponibili anche a livello API 23 e inferiore)
  • Digitare annotazioni (disponibili anche a livello API 23 e inferiore)

Sono inoltre disponibili le seguenti API del linguaggio Java 8:

API di riflessione e relative al linguaggio:

  • java.lang.FunctionalInterface
  • java.lang.annotazione.Ripetibile
  • java.lang.riflettere.Metodo.API isDefault() e Reflection associate alle annotazioni ripetibili, ad esempio AnnotatoeLemento.getAnnotationsByType (Classe)

API di utilità:

  • java.util.funzione
  • java.util.flusso

Per utilizzare le nuove funzionalità del linguaggio Java 8, è necessario utilizzare anche il Jack toolchain. Questa nuova toolchain Android compila fonti di linguaggio Java in bytecode DEX leggibile da Android, ha il suo .jack formato libreria, e fornisce la maggior parte delle funzionalità toolchain come parte di un unico strumento: riconfezionamento, restringimento, offuscamento e multidex.

Ecco un confronto tra le due toolchain utilizzate per creare file Android DEX:

Legacy javac toolchain:
    javac (.java → .class) → dx (.class → .dex)
    New Jack toolchain:
    Jack (.java → .jack → .dex)
 1
Author: BlackHatSamurai, 2016-12-13 22:12:14

Ho fatto questa domanda oltre 3 anni fa e ovviamente le risposte sono cambiate nel corso degli anni. Come molti sopra hanno già risposto, a partire da qualche tempo fa, la risposta è diventata. Non ho mai aggiornato la risposta accettata perché era la risposta corretta al momento. (Non sono sicuro di quale sia la politica di overflow dello stack su questo)

Volevo solo aggiungere un'altra risposta per coloro che cercano ancora questo argomento. A partire da 5/17/2017 Google ha anche annunciato che Kotlin è anche un linguaggio ufficiale per lo sviluppo di Android.

Non ho trovato un comunicato stampa ufficiale, ma ho guardato alcuni dei video di Google I/O in cui è stato annunciato. Ecco un link a un blog post dal team Kotlin sull'annuncio.

 1
Author: nPn, 2017-05-18 11:13:26

L'aggiunta di quanto segue ha risolto il problema per me (Android studio 2.3.2):

Costruire.gradle (Progetto)

buildscript {
repositories {
    ...
    jcenter()
}
dependencies {
    ...
    classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
    ...
   }
}

Costruire.gradle (Modulo: app)

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    } // SET JAVA VERSION
    ...
}
 1
Author: Richard, 2017-06-02 17:18:35

Un sottoinsieme di Java 8 è ora supportato su Android Studio. Basta fare le regolazioni di compatibilità di origine e di destinazione dalla finestra qui sotto:

File > > Struttura del progetto

Finestra di regolazione

Maggiori informazioni sono fornite nel link sottostante.

Https://developer.android.com/studio/write/java8-support.html

 1
Author: Fio, 2018-02-03 21:47:44

Modo più semplice

È possibile abilitare il supporto java 1.8 per il progetto Android.

  • Struttura aperta del progetto

    • Premendo Ctrl + Maiusc + Alt + S

    • Oppure File > Project Structure

  • Aggiornare la Compatibilità sorgente e Compatibilità destinazione a 1.8 nella finestra di dialogo Struttura progetto come mostrato (fare clic su File > Progetto Struttura).

immagine

Nota: Il supporto Java 1.8 può essere abilitato per Android Studio 3.0.0 o versioni successive. Vedere Documentazione per ulteriori letture.

 0
Author: Khemraj, 2018-09-12 07:59:12