635 Stimmen

Ist es möglich, Java 8 für die Android-Entwicklung zu verwenden?

Beim Durchsuchen des Webs ist es nicht klar, ob Java 8 für die Android-Entwicklung unterstützt wird oder nicht.

Bevor ich Java 8 herunterlade/einrichte, kann mir jemand auf offizielle Dokumente zeigen, die besagen, dass Java 8 für die Android-Entwicklung unterstützt wird oder nicht.

16voto

Dhaval Jivani Punkte 8875

Native Java 8 kommt endlich auf Android an!

Entfernen Sie das Retrolambda-Plugin und den Retrolambda-Block aus der build.gradle-Datei jedes Moduls:

Um Jack zu deaktivieren und zum Standard-Toolchain zu wechseln, entfernen Sie einfach den jackOptions-Block aus der build.gradle-Datei Ihres Moduls.

Um die unterstützten Java 8-Sprachfunktionen zu verwenden, aktualisieren Sie das Android-Plugin auf 3.0.0 (oder höher).

Ab Android Studio 3.0 werden Java-8-Sprachfunktionen jetzt nativ von Android unterstützt:

  • Lambda-Ausdrücke
  • Methodenreferenzen
  • Typ-Annotationen (derzeit sind Typ-Annotationen nur zur Compile-Zeit verfügbar, nicht zur Laufzeit);
  • Wiederholte Annotationen
  • Standard- und statische Schnittstellenmethoden (ab API-Ebene 24 oder höher, jedoch keine direkte Ausführungsunterstützung);

Außerdem sind ab API-Ebene 24 die folgenden Java-8-API 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()

Fügen Sie diese Zeilen zur Informierung des Projekts über das Sprachniveau Ihrer Anwendungsmodule build.gradle hinzu:

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

Deaktivieren Sie die Unterstützung für Java 8-Sprachfunktionen, indem Sie Folgendes zur gradle.properties-Datei hinzufügen:

android.enableDesugar=false

Sie sind fertig! Sie können jetzt native Java 8 verwenden!

14voto

Jason Punkte 6994

Android UNTERSTÜTZT OFFIZIELL Java 8 seit Android N.

Feature-Ankündigungen finden Sie hier, die Ankündigung der Java 8-Sprache lautet:

Verbesserte Unterstützung für die Java 8-Sprache - Wir freuen uns, Java-8-Sprachfunktionen auf Android zu bringen. Mit dem Jack-Compiler von Android können Sie jetzt viele beliebte Java-8-Sprachfunktionen, einschließlich Lambdas und mehr, auf Android-Versionen bis zurück zu Gingerbread verwenden. Die neuen Funktionen helfen, den Boilerplate-Code zu reduzieren. Zum Beispiel können Lambdas anonyme innere Klassen ersetzen, wenn Ereignislistener bereitgestellt werden. Einige Java-8-Sprachfunktionen - wie Standard- und statische Methoden, Streams und funktionale Schnittstellen - stehen jetzt auch auf N und höher zur Verfügung. Mit Jack freuen wir uns darauf, die Java-Sprache genauer zu verfolgen und gleichzeitig die Abwärtskompatibilität aufrechtzuerhalten.

12voto

Vishal Raj Punkte 1735

Wir können Java 8 mit folgendem verwenden:

  1. In build.gradle (Projekt: myProject) fügen Sie folgendes hinzu

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x ist die aktuelle Version
  2. In build.gradle (Modul: myModule) fügen Sie folgendes hinzu

    apply plugin: 'me.tatarka.retrolambda'
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

12voto

Idolon Punkte 27701

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

6voto

Khemraj Sharma Punkte 52006

Einfacher Weg

Sie können die Unterstützung von Java 1.8 für das Android-Projekt aktivieren.

  • Öffnen Sie die Projektstruktur

    • Entweder durch Drücken von Strg + Umschalt + Alt + S

    • Oder Datei > Projektstruktur

  • Aktualisieren Sie die Quellkompatibilität und Zielkompatibilität auf 1.8 im Dialogfeld Projektstruktur wie gezeigt (klicken Sie auf Datei > Projektstruktur).

Bild

Oder Sie können Gradle verwenden

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

Projekt synchronisieren. Und das war's!

Hinweis: Die Unterstützung von Java 1.8 kann in Android Studio 3.0.0 oder höher aktiviert werden. Siehe Dokumentation für weitere Informationen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X