Beim Durchsuchen des Webs ist nicht klar, ob Java 8 für die Android-Entwicklung unterstützt wird oder nicht.
Bevor ich Java 8 herunterlade / einrichte, kann mich jemand auf eine "offizielle" Dokumentation verweisen, die besagt, dass Java 8 für die Android-Entwicklung unterstützt wird oder nicht.
Antworten:
Java 8
Android unterstützt alle Java 7-Sprachfunktionen und eine Teilmenge der Java 8-Sprachfunktionen, die je nach Plattformversion variieren.
Um zu überprüfen, welche Funktionen von Java 8 unterstützt werden
Verwenden Sie Java 8-Sprachfunktionen
Zukunft der Unterstützung von Java 8-Sprachfunktionen unter Android
Eclipse-Benutzer:
Für alte Entwickler, die Eclipse bevorzugen, unterstützt Google die Unterstützung von Eclipse Android Developer Tools
Wenn Sie Java 8 JDK installiert haben, probieren Sie es aus. Wenn Probleme auftreten, versuchen Sie, den Compiler in Eclipse über das Fenstermenü → Einstellungen → Java → Compiler auf 1.6 festzulegen . Java 7 funktioniert auch:
Installieren Sie mehrere JDK und versuchen Sie es.
quelle
UPDATE 2017/11/04 - Android Studio 3.0 bietet jetzt native Unterstützung für Java 8.
gradle-retrolambda
wird jetzt nicht mehr benötigt. Siehe https://developer.android.com/studio/write/java8-support.htmlDer obige Link enthält auch Migrationsanweisungen, wenn Sie verwenden
gradle-retrolambda
. Ursprüngliche Antwort unten:Android unterstützt Java 8 nicht. Es unterstützt nur bis zu Java 7 (wenn Sie Kitkat haben) und es hat immer noch keine aufgerufene Dynamik, nur den neuen Syntaxzucker.
Wenn Sie Lambdas verwenden möchten, eine der Hauptfunktionen von Java 8 in Android, können Sie gradle-retrolamba verwenden . Es ist eine Gradle-Build-Abhängigkeit, die Retrolambda integriert, ein Tool, das Java 8-Bytecode zurück in Java 6/7 konvertiert. Wenn Sie den Compiler in Android Studio so einstellen, dass er Java 8-Bytecode kompiliert und somit Lambdas zulässt, wird er grundsätzlich wieder in Java 6/7-Bytecode konvertiert, der dann wiederum in Dalvik-Bytecode konvertiert wird. Es ist ein Hack, wenn Sie anstelle der offiziellen Unterstützung einige JDK 8-Funktionen in Android ausprobieren möchten.
quelle
try-with-resources
funktioniert erst seit Kitkat.Sie können in der Tat die
gradle-retrolamba
Gradle-Build-Abhängigkeit verwenden, um Java 8 für die Android-Entwicklung zu verwenden.Unten finden Sie die vollständige Anleitung, die ich kürzlich befolgt habe, um Lambda-Ausdrücke für die Android-Entwicklung auszuführen. Die Originalquelle dieses Handbuchs wird am Ende erwähnt.
Vorbereitung
In diesem Handbuch wird davon ausgegangen, dass der Leser über grundlegende Kenntnisse der Android-Entwicklung verfügt und auf ADT Version 22.6.2 basiert, da die aktuelle ADT-Version 23.0.2 Probleme mit der Erstellung von Layoutordnern zu haben scheint. Details zu diesem Problem finden Sie unter folgendem Link:
http://code.google.com/p/android/issues/detail?id=72591
Die Schritte in diesem Handbuch werden für einen 64-Bit- Entwicklungscomputer von Windows 8.1 angegeben, können jedoch problemlos an andere Plattformen angepasst werden. Das neue Build-System
Gradle
wird für Build / Clean-Prozesse verwendet, und das Installationsverfahren wird ebenfalls bereitgestellt. Außerdem müssen beideJDK 8
undJDK 7
auf der Entwicklungsmaschine koexistieren. Die folgenden Schritte müssen befolgt werden, um sie zu installieren:bin
Ihrer%PATH%
Variablen den JDK 8-Basisordner und den JDK 8- Ordner hinzuJAVA_HOME
mit dem Wert des Pfads des JDK 8-BasisordnersJAVA8_HOME
mit dem Wert des Pfads des JDK 8-BasisordnersJAVA7_HOME
mit dem Wert des Pfads des JDK 7-Basisordnersjava -version
Befehl aus. Überprüfen Sie, ob Java 8 aktiv istjavac -version
Befehl im selben Fenster aus und stellen Sie sicher, dass der JDK 8-Java-Compiler ebenfalls aktiv istJetzt muss ADT-22.6.2 über den folgenden Link heruntergeladen werden:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
D:\adt
ANDROID_HOME
mit dem Wert des Pfads Ihres ADT-Installationsordners, zD:\adt\sdk
Andoid SDK Platform Tools
undAndoid SDK Tools
Ordner, z. B.D:\adt\sdk\tools
undD:\adt\sdk\platform-tools
, zu Ihrer%PATH%
Variablen hinzuD:\adt\eclipse
D:\adt\workspace
Android SDK Manager
Schaltfläche in der SymbolleisteAndroid SDK Build tools Rev. 19.1
undAndroid Support Library
nur. Deaktivieren Sie alles andere und installieren Sie diese beiden Pakete.Wenn alles gut geht, ist ADT betriebsbereit.
Die Installation der folgenden Tools wird ebenfalls dringend empfohlen:
Java 8-Unterstützung für Eclipse Kepler: Dadurch erkennt Eclipse neue Java 8-Syntaxerweiterungen und macht Ärger
red dots
in Ihrem Java-Code-Editor überflüssig. Es kann überHelp -> Install New Software
in Eclipse installiert werden . Geben Sie http://download.eclipse.org/eclipse/updates/4.3-P-builds/ in dasWork with
Feld ein und fahren Sie mit der Installation fort.Nodeclipse / Enide Gradle: Wird hauptsächlich zum Hervorheben von Schlüsselwörtern in der Sprache Groovy verwendet. Groovy wird als DSL für Gradle-Build-Skripte verwendet. Dieses Plugin kann über installiert werden
Eclipse Marketplace
. Eclipse in ADT-22.6.2 wird jedoch nicht mitgeliefertEclipse Marketplace Client
. Daher müssen Sie zuerst installieren müssenEclipse Marketplace Client
mittelsInstall New Software
Werkzeug in Eclipse. Geben Sie http //: download.eclipse.org/mpc/kepler/ in dasWork with
Feld ein und fahren Sie mit der Installation fort. Nach der InstallationEclipse Marketplace Client
können SieNodeclipse/Enide Gradle
in der suchenEclipse Marketplace Client
und es installieren.Virtuelles Genymotion-Gerät: Es ist ein großartiger Ersatz für die Standardeinstellung,
Android Virtual Device
die mit ADT geliefert wird . AVD ist ärgerlich umständlich und stürzt ohne Grund weiter ab. Mit Genymotion können Sie Android-VDs mithilfe vonCyanogenMod
Bildern vorbereiten , die von Oracle VirtualBox ausgeführt werden . Die Einzelbenutzerlizenz ist kostenlos und kann von http://www.genymotion.com heruntergeladen werden . Es ist nur ein Login erforderlich und es kann auch in Eclipse integriert werden. Details finden Sie unter:https://cloud.genymotion.com/page/doc/#collapse8
Unten sehen Sie einen Screenshot eines auf Android 4.3 basierenden virtuellen CyanogenMod-Geräts.
Es kann als vollwertiges Android-Gerät betrachtet werden, das auf einem x86- oder x64-basierten PC ausgeführt wird. Um Google-Dienste wie
Google PlayStore
auf diesem virtuellen Gerät nutzen zu können, muss eingapps
Bild für die verwendete Android-Version auf das Gerät geflasht werden. Ein geeignetesgapps
Image für das Gerät kann von der CyanogenMod-Website heruntergeladen werden:http://wiki.cyanogenmod.org/w/Google_Apps
Die Gradle-Installation ist optional, da sie auch vom Android SDK selbst bereitgestellt wird. Eine separate Installation wird jedoch dringend empfohlen. Die Installation kann folgendermaßen erfolgen:
Gehen Sie zur Gradle-Website: http://www.gradle.org/
Klicken
Downloads
Previous Releases
wählen Version 1.10 herunterladen entweder gradle-1.10-all.zip oder gradle-1.10-bin.zipD:\adt\gradle
GRADLE_HOME
mit dem Wert des Pfads Ihres Gradle-Installationsordners, zD:\adt\gradle
D:\adt\gradle\bin
Ihrer%PATH%
Variablen beispielsweise Ihren Gradle-Binärordner hinzugradle -v
Befehl aus und überprüfen Sie, ob er ausgeführt wird. Wenn Sie diesen Punkt erfolgreich erreicht haben, können Sie Ihre erste Android-App mit Java 8-Funktionen erstellen.Demo App
Es wird eine einfache App erstellt, um die Verwendung der im vorherigen Abschnitt beschriebenen Tools zu demonstrieren. Sie können einfach die folgenden Schritte ausführen, um einen Einblick in die Verwendung von Lambda-Ausdrücken in den Android Developer Tools zu erhalten:
File -> New -> Other -> Android -> Android Application Project
Next
Schaltfläche in den folgenden Formularen und dann auf dieFinish
Schaltfläche auf dem letzten. Warten Sie, bis ADT das Laden des Projekts abgeschlossen hatNew -> Folder
und benennen Sie esbuilders
gen (Generated Java Files)
Ordner und löschen Sie ihn. Gradle wird in Kürze die gleichen Dateien für uns generieren und wir werden sie in dens build path. The
vom Standard-Ant Builder erstellten Projekt- Gen-Ordner einfügen, der nicht mehr benötigt wird, und die Artefakte unter diesem Ordner sind veraltetErstellen Sie folgende Batchdateien unter dem
builders
Ordner:Füllen Sie diese Batch-Dateien wie folgt aus:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
Project -> Build Automatically
MenüoptionProperties -> Builders
Sie alle von ADT bereitgestellten Standard-Builder aus und deaktivieren Sie sieNew
Schaltfläche im selben Fenster und wählen SieProgram
und klicken SieOK
Main
Registerkarte der neuen Builder-KonfigurationRefresh
Registerkarte der neuen Builder-KonfigurationEnvironment
Registerkarte der neuen Builder-KonfigurationBuild Options
Registerkarte der neuen Builder-KonfigurationGradle_Post_Build
, dergradle_post_build.cmd
als Programm verwendet wird. Alle anderen Einstellungen dieses Builders müssen mit denen des zuvor erstellten Builders identisch sein. Dieser Builder ist dafür verantwortlich, die durch den Build-Prozess erstellten Artefakte in denbin
Ordner zu kopieren .Gradle_Cleaner
, dergradle_clean.cmd
als Programm verwendet wird. Nur dieRun the builder
Einstellung auf der letzten Registerkarte muss als festgelegt werdenDuring a Clean
. Alle anderen Einstellungen dieses Builders müssen mit denen des ersten Builders identisch sein. Dieser Builder ist für die Reinigung der durch den Build-Prozess erstellten Artefakte verantwortlich, wie der Name schon sagt.Neue Erbauer des
HelloLambda
ProjektsExport
Android -> Generate Gradle Build Files
und klicken SieNext
Finish
gradlew
undgradlew.bat
. Löschen Sie auch dengradle
OrdnerProject -> Clean
Menüoption. Füllen Sie das folgende Formular aus:Clean Project
FensterOK
und warten Sie, bis der Reinigungsvorgang abgeschlossen istsetContentView
in IhrerMainActivity
Klasse zu funktionieren :build.gradle
Datei bissourceCompatibility
zum folgenden Abschnitt:Properties -> Java Compiler
Option aus und setzen Sie alle Konformitätsstufen auf Java 8. Dadurch erkennt Eclipse neue Java 8-Konstrukte wie Lambda-Ausdrücke.No
in das BenachrichtigungsfensterBuild project
. Eclipse beginnt mit der Erstellung des Projekts.Erstellungsprozess
Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zu
Properties -> Java Build Path
. Fügen Sie dem Erstellungspfad die folgenden Ordner hinzu (siehe auch Abbildung unten):build\source\buildConfig\debug
build\source\r\debug
Eclipse kann nun Dateien erkennen
R.java
undbuildConfig.java
anzeigen und zeigt keinered dots
Fehler an, die sich auf die Ressourcendateien des Projekts beziehen.Run Configuration
für Ihre Android-Zielplattform, indem Sie mit der rechten Maustaste auf das Projekt klicken und dann auswählenRun As -> Run Configurations
. Diese Demo-Anwendung sieht beispielsweise wie folgt aus: Genymotion VD:HelloLambda-Anwendung
Sie können im
LogCat
Fenster feststellen, dass das Code-Snippet mit einem einfachen Lambda-Ausdruck ordnungsgemäß funktioniertQuelle: Verwenden von Java 8 Lambda Expressions in Android Developer Tools
quelle
Folgen Sie diesem Link für neue Updates. Verwenden Sie Java 8-Sprachfunktionen
Alte Antwort
Ab Android N Preview Release unterstützt Android eingeschränkte Funktionen von Java 8, siehe Java 8 Sprachfunktionen
Unterstützte Java 8-Sprachfunktionen und APIs
Standard- und statische Schnittstellenmethoden
Lambda-Ausdrücke (auch auf API-Ebene 23 und niedriger verfügbar)
Wiederholbare Anmerkungen
Methodenreferenzen (auch auf API-Ebene 23 und niedriger verfügbar)
Es gibt einige zusätzliche Java 8-Funktionen, die von Android unterstützt werden. Ausführliche Informationen finden Sie in den Java 8-Sprachfunktionen
Aktualisieren
Update 2
Jetzt unterstützt die stabile Version von Android Studio 3.0 Java 8-Bibliotheken und Java 8-Sprachfunktionen (ohne den Jack-Compiler).
quelle
minSdkVersion
?Ja, Android unterstützt jetzt Java 8 (24.1.17)
Jetzt ist es möglich
Sie müssen Ihr Gerät jedoch unter Java 1.8 ausführen und "jackOptions" aktivieren, damit es ausgeführt werden kann. Jack ist der Name für den neuen Android-Compiler, auf dem Java 8 ausgeführt wird
https://developer.android.com/guide/platform/j8-jack.html
Fügen Sie diese Zeilen zu build_gradle hinzu
Java 8 scheint die laufende Java-Engine von Android Studio 2.0 zu sein, aber es akzeptiert immer noch nicht die Syntax von Java 8, nachdem ich es überprüft habe, und Sie können jetzt keinen Compiler aus Android Studio auswählen. Sie können das Scala-Plugin jedoch verwenden, wenn Sie einen funktionalen Programmiermechanismus in Ihrem Android-Client benötigen.
quelle
Android verwendet ein Java, das von Java 6 abzweigt.
Ab Android SDK Version 19 können Sie Java - 7 - Funktionen verwenden , indem Sie diese . (Noch) keine vollständige Unterstützung für Java 8.
quelle
Native Java 8 kommt auf Android! Schließlich!
Aktualisieren Sie das Android-Plugin auf 3.0.0 (oder höher), um die unterstützten Java 8-Sprachfunktionen zu verwenden.
Ab Android Studio 3.0 werden Java 8-Sprachfunktionen jetzt von Android nativ unterstützt:
Ebenfalls ab der Mindest-API-Ebene 24 sind die folgenden Java 8-APIs verfügbar:
Fügen Sie diese Zeilen zum build.gradle Ihres Anwendungsmoduls hinzu, um das Projekt über die Sprachstufe zu informieren:
Deaktivieren Sie die Unterstützung für Java 8- Sprachfunktionen, indem Sie Ihrer gradle.properties- Datei Folgendes hinzufügen :
Du bist fertig! Sie können jetzt natives Java8 verwenden!
quelle
Android unterstützt offiziell 8 8 ab Android N.
Feature-Ankündigungen sind hier , die Java 8-Sprachansage lautet:
quelle
Wir können Java 8 verwenden mit:
Fügen Sie in build.gradle (Projekt: myProject) Folgendes hinzu
Fügen Sie in build.gradle (Modul: myModule) Folgendes hinzu
quelle
UPDATE 2020/01/17
Android Studio 4.0 bietet Unterstützung für die Verwendung einer Reihe von Java 8-Sprach-APIs mithilfe der Desugaring-Technik, ohne dass eine Mindest-API-Stufe für Ihre App erforderlich ist:
https://developer.android.com/studio/preview/features#j8-desugar
ORIGINAL POST AB 2017
Android Studio 3.0 bietet nun integrierte Unterstützung für einige der Java 8-Sprachfunktionen:
Ab API-Level 24 stehen auch folgende Java 8-APIs zur Verfügung:
java.util.stream
java.util.function
java.lang.FunctionalInterface
java.lang.annotation.Repeatable
java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
java.lang.reflect.Method.isDefault()
Außerdem die
try-with-resources
Unterstützung auf alle Android-API-Ebenen erweitert.Weitere Java 8-Funktionen werden voraussichtlich in Zukunft hinzugefügt.
Weitere Informationen finden Sie unter:
https://developer.android.com/studio/write/java8-support.html
quelle
2.4.0-alpha6
). Bitte überprüfen Sie den Angebotsblock in der Antwort.Einfacher Weg
Sie können die Java 1.8-Unterstützung für Android-Projekte aktivieren.
Öffnen Sie die Projektstruktur
Entweder durch Drücken Ctrl + Shift + Alt + S
Oder
File > Project Structure
Aktualisieren Sie die Quell- und Zielkompatibilität im Dialogfeld "Projektstruktur" wie gezeigt auf 1,8 (klicken Sie auf "Datei"> "Projektstruktur").
Oder Sie können Gradle verwenden
Projekt synchronisieren. Und das ist es!
Hinweis: Die Java 1.8-Unterstützung kann für Android Studio 3.0.0 oder höher aktiviert werden . Weitere Informationen finden Sie in der Dokumentation .
quelle
Als ich diese Frage vor fast 2 Jahren stellte, war die Antwort wirklich "offiziell" Nein, aber wie in der Antwort von ekcr1 hervorgehoben, können Sie eine der am meisten erwarteten Funktionen (Lambdas) zum Laufen bringen, wenn Sie Retrolamba verwenden. Zu der Zeit, als ich noch Eclipse verwendete, befand sich Android Studio im Vorschaumodus, sodass ich diesen Weg nie eingeschlagen habe.
Heute denke ich, dass die „offizielle“ Antwort immer noch Nein lautet, und während Retrolamba immer noch ein guter Weg zu sein scheint, gibt es eine andere Option für diejenigen, die bereit sind, einen etwas „inoffiziellen“ Weg zu gehen, nämlich Kotlin.
Heute erreichte Kotlin 1.0.0. Für diejenigen, die nicht mit Kotlin vertraut sind, finden Sie weitere Informationen auf ihrer Website hier:
https://kotlinlang.org
oder schauen Sie sich dieses Utube-Video eines Vortrags von Jake Wharton an
https://www.youtube.com/watch?v=A2LukgT2mKc
quelle
Neuesten Nachrichten:
Google gibt bekannt, dass die Plattform mit Android N und Android Studio 2.1+ Java 8 unterstützt. Außerdem wurde eine stabile Version von Studio 2.1 veröffentlicht.
Endlich können wir Lambda-Ausdrücke verwenden. Kein Listenfilter mehr in for-Schleife. Horeeey.
quelle
Fügen Sie diese Konfiguration build.gradle hinzu und synchronisieren Sie gradle:
quelle
Google hat gerade angekündigt, dass Java 8 von Android nativ unterstützt wird und dass die Jack-Toolchain veraltet sein wird:
Weitere Informationen hier: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
quelle
Ja. Wir werden bald Java 8 verwenden!
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
quelle
Füge diese Zeile in das Modul lvl build gradel ein
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
quelle
Ich habe eine ähnliche Antwort auf eine ähnliche Frage zu Stack Overflow geschrieben, aber hier ist ein Teil dieser Antwort.
Android Studio 2.1:
Die neue Version von Android Studio (2.1) unterstützt Java 8-Funktionen. Hier ist ein Auszug aus dem Blogspot-Beitrag von Android Developers :
Vor Android Studio 2.1:
Android unterstützt Java 1.8 noch nicht (es unterstützt nur bis zu 1.7), daher können Sie keine Java 8-Funktionen wie Lambdas verwenden.
Diese Antwort enthält weitere Informationen zur Kompatibilität von Android Studio . Es sagt aus:
Wenn Sie mehr über die Verwendung erfahren möchten
gradle-retrolambda
, enthält diese Antwort viele Details dazu .quelle
"SDK Location"
(dies ist auf einem Mac FWIW) sagt nur:"/Users/me/Library/Android/sdk"
Benutze ich Java8 - wie verwende ich Java8? Vielen Dank!Ich dachte, ich würde eine aktualisierte Antwort für diejenigen veröffentlichen, die etwas Aktuelleres suchen.
Derzeit unterstützen Android und Android Studio eine Teilmenge der Java 8-Funktionen. Laut der Android-Dokumentation auf ihrer Website sagt Google:
Darüber hinaus sind die folgenden Java 8-Sprach-APIs verfügbar:
quelle
Ich habe diese Frage vor über 3 Jahren gestellt und offensichtlich haben sich die Antworten im Laufe der Jahre geändert. Wie viele oben bereits geantwortet haben, lautete die Antwort seit einiger Zeit Ja . Ich habe die akzeptierte Antwort nie aktualisiert, da sie zu diesem Zeitpunkt die richtige war. (Ich bin nicht sicher, wie die Stapelüberlaufrichtlinie lautet)
Ich wollte nur eine weitere Antwort für diejenigen hinzufügen, die noch nach diesem Thema suchen. Ab dem 17.05.2017 gab Google außerdem bekannt, dass Kotlin auch eine offizielle Sprache für die Android-Entwicklung ist.
Ich habe keine offizielle Pressemitteilung gefunden, aber ich habe mir einige der Google I / O- Videos angesehen, in denen sie angekündigt wurden. Hier ist ein Link zu einem Blog- Beitrag des Kotlin-Teams zur Ankündigung.
quelle
Das Hinzufügen des Folgenden hat das Problem für mich behoben (Android Studio 2.3.2):
build.gradle (Projekt)
build.gradle (Modul: App)
quelle
Eine Teilmenge von Java 8 wird jetzt in Android Studio unterstützt. Nehmen Sie einfach die Einstellungen für die Quell- und Zielkompatibilität im folgenden Fenster vor:
Datei -> Projektstruktur
Weitere Informationen finden Sie unter dem folgenden Link.
https://developer.android.com/studio/write/java8-support.html
quelle
UPDATE 28.10.2019
Android Studio 4.0 löst dieses Problem .
Der D8-Compiler patcht zur Kompilierungszeit einen Backport der nativen Java 8-APIs in Ihr APK, und Ihre App verwendet diesen Code zur Laufzeit anstelle der nativen APIs. Der Prozess wird als Desugaring bezeichnet .
quelle
Alle oben genannten Lösungen scheinen 2019 mit dem neuesten Android Studio 3.4+ nicht zu funktionieren .
Ich habe eine perfekte und aktuelle Lösung gefunden, um Ihr Android-Projekt auf Java 8 zu migrieren oder zu aktualisieren .
Lösung: Klicken Sie auf Datei -> Projektstruktur -> Module -> Registerkarte Eigenschaften .
Ändern Sie die Quell- und Zielkompatibilität in 1.8 (Java 8).
quelle
Ja, Sie können Java 8-Sprachfunktionen in Android Studio verwenden, die Version muss jedoch 3.0 oder höher sein. In diesem Artikel erfahren Sie, wie Sie Java 8-Funktionen im Android Studio verwenden.
https://bijay-budhathoki.blogspot.com/2020/01/use-java-8-language-features-in-android-studio.html
quelle
Einfachste Möglichkeit, Java 8-Unterstützung hinzuzufügen
Fügen Sie es einfach in Ihre build.gradle-Datei ein.
quelle