UPDATE 2020/01/17
Android Studio 4.0 enthält Unterstützung für die Verwendung einer Reihe von Java 8-Sprach-APIs mithilfe einer Technik namens Desugaring, ohne dass eine Mindest-API-Ebene für Ihre App erforderlich ist:
https://developer.android.com/studio/preview/features#j8-desugar
Der folgende Satz von APIs wird in dieser Version unterstützt:
- Sequentielle Streams (
java.util.stream
)
- Ein Teil von
java.time
java.util.function
- Neue Ergänzungen zu
java.util.{Map,Collection,Comparator}
- Optionale (
java.util.Optional
, java.util.OptionalInt
und java.util.OptionalDouble
) sowie einige andere neue Klassen, die nützlich sind für die oben genannten APIs
- Einige Ergänzungen zu
java.util.concurrent.atomic
(neue Methoden für AtomicInteger
, AtomicLong
und AtomicReference
)
ConcurrentHashMap
(mit Fehlerbehebungen für Android 5.0)
Um diese Sprach-APIs zu unterstützen, kompiliert D8 eine separate Bibliotheks-DEX-Datei, die eine Implementierung der fehlenden APIs enthält und fügt sie Ihrer App hinzu. Der Desugaring-Prozess schreibt den Code Ihrer App um, um stattdessen diese Bibliothek zur Laufzeit zu verwenden.
Um die Unterstützung für diese Sprach-APIs zu aktivieren, fügen Sie Folgendes zu Ihrer Modul build.gradle
-Datei hinzu:
android {
defaultConfig {
// Erforderlich, wenn minSdkVersion auf 20 oder niedriger gesetzt ist
multiDexEnabled true
}
compileOptions {
// Flag, um die Unterstützung für die neuen Sprach-APIs zu aktivieren
coreLibraryDesugaringEnabled true
// Setzt Java-Kompatibilität auf Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
}
ORIGINAL POST VON 2017
Android Studio 3.0 begann, eine eingebaute Unterstützung für einige Java 8-Sprachfunktionen bereitzustellen, die sind:
- Lambda-Ausdrücke
- Methodenreferenzen
- Typannotationen (Informationen sind zur Kompilierungszeit verfügbar, aber nicht zur Laufzeit)
- Wiederholende Annotationen
- Standard- und statische Schnittstellendethoden
Auch ab API-Ebene 24 sind folgende Java 8-APIs verfügbar:
java.util.stream
java.util.function
java.lang.FunctionalInterface
java.lang.annotation.Repeatable
java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
java.lang.reflect.Method.isDefault()
Darüber hinaus wurde die Unterstützung für try-with-resources
auf alle Android-API-Ebenen erweitert.
Weitere Java 8-Funktionen sollen in Zukunft hinzugefügt werden.
Um die unterstützten Java 8-Sprachfunktionen zu verwenden, aktualisieren Sie das Android-Plugin auf 3.0.0-alpha1 (oder höher) und fügen Sie Folgendes zu Ihrer Modul build.gradle
-Datei hinzu:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Für weitere Details besuchen Sie:
https://developer.android.com/studio/write/java8-support.html