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.

1voto

BlackHatSamurai Punkte 22628

Ich dachte, ich würde eine aktualisierte Antwort für diejenigen posten, die nach etwas Aktuellem suchen.

Aktuell unterstützen Android und Android Studio eine Teilmenge von Java 8-Funktionen. Laut der Android-Dokumentation auf ihrer Website sagt Google:

Die Unterstützung von Java 8-Sprachfunktionen erfordert einen neuen Compiler namens Jack. Jack wird nur von Android Studio 2.1 und höher unterstützt. Wenn Sie also Java 8-Sprachfunktionen verwenden möchten, müssen Sie Android Studio 2.1 verwenden, um Ihre App zu erstellen.

Wenn Sie Android Studio bereits installiert haben, stellen Sie sicher, dass Sie auf die neueste Version aktualisieren, indem Sie auf Hilfe > Auf Updates überprüfen klicken (auf einem Mac auf Android Studio > Auf Updates überprüfen). Wenn Sie die IDE noch nicht auf Ihrem Arbeitsplatz installiert haben, laden Sie hier Android Studio herunter.

Unterstützte Java 8-Sprachfunktionen und APIs

Android unterstützt nicht alle Java 8-Sprachfunktionen. Die folgenden Funktionen stehen jedoch zur Verfügung, wenn Apps für Android 7.0 (API-Level 24) entwickelt werden:

  • Standard- und statische Schnittstellenmethoden (Lambda-Ausdrücke sind auch auf API-Level 23 und niedriger verfügbar)
  • Wiederholbare Annotationen
  • Methodenreferenzen (auch auf API-Level 23 und niedriger verfügbar)
  • Typ-Annotationen (auch auf API-Level 23 und niedriger verfügbar)

Zusätzlich sind auch die folgenden Java 8-Sprach-APIs verfügbar:

Reflexions- und sprachbezogene APIs:

  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.Method.isDefault() und Reflexions-APIs, die mit wiederholbaren Annotationen verbunden sind, wie AnnotatedElement.getAnnotationsByType(Class)

Utility-APIs:

  • java.util.function
  • java.util.stream

Um die neuen Java 8-Sprachfunktionen zu verwenden, müssen Sie auch das Jack-Toolchain verwenden. Dieser neue Android-Toolchain kompiliert Java-Quellcodes in für Android lesbaren DEX-Bytecode, hat sein eigenes .jack-Bibliotheksformat und bietet die meisten Toolchain-Funktionen als Teil eines einzelnen Tools: Neuverpackung, Verkleinerung, Verschleierung und Multidex.

Hier ist ein Vergleich der beiden Toolchains, die zur Erstellung von Android DEX-Dateien verwendet werden:

Legacy-Javac-Toolchain:
    Javac (.java  .class)  dx (.class  .dex)
    Neuer Jack-Toolchain:
    Jack (.java  .jack  .dex)

1voto

Farbod Salamat-Zadeh Punkte 18863

Ich habe eine ähnliche Antwort auf eine ähnliche Frage auf 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 Ausschnitt aus dem Android Developers Blogspot-Beitrag:

... Das Android Studio 2.1-Release enthält Unterstützung für den neuen Jack-Compiler und Unterstützung für Java 8.

...

Um Java 8 Sprachfunktionen bei der Entwicklung mit der N Developer-Vorschau zu verwenden, müssen Sie den Jack-Compiler verwenden. Der Assistent für neue Projekte [Datei Neues Projekt] generiert die korrekten Konfigurationen für Projekte, die auf die N abzielen.


Vor Android Studio 2.1:

Android unterstützt noch nicht Java 1.8 (es unterstützt nur bis 1.7), sodass Sie keine Java 8 Funktionen wie Lambdas verwenden können.

Diese Antwort gibt mehr Details zur Kompatibilität von Android Studio; es besagt:

Wenn Sie Lambdas verwenden möchten, eine der Hauptfunktionen von Java 8 in Android, können Sie gradle-retrolambda verwenden

Wenn Sie mehr über die Verwendung von gradle-retrolambda erfahren möchten, gibt diese Antwort viele Details dazu.

1voto

Bora Savkar Punkte 79

Einfachster Weg, um Java 8-Unterstützung hinzuzufügen

  compileOptions {
     targetCompatibility = '1.8'
     sourceCompatibility = '1.8'
  }

Einfach in deine build.gradle-Datei hinzufügen.

1voto

Himesh Perera Punkte 177

Das Android Gradle Plugin 3.0.0 und spätere Versionen unterstützen alle Java 7-Sprachfunktionen und eine Teilmenge der Java 8-Sprachfunktionen, die je nach Plattformversion variieren. Beim Erstellen Ihrer App mit dem Android Gradle Plugin 4.0.0 und höher können Sie eine Reihe von Java 8-Sprach-APIs verwenden, ohne eine Mindest-API-Ebene für Ihre App zu benötigen.

Auf dieser Seite werden die Java 8-Sprachfunktionen beschrieben, die Sie verwenden können, wie Sie Ihr Projekt ordnungsgemäß konfigurieren können, um sie zu verwenden, und eventuelle bekannte Probleme, auf die Sie stoßen können.

Dieser Artikel wird Ihnen dabei helfen. Den Link setze ich hier unten ein https://developer.android.com/studio/write/java8-support

0voto

zackygaurav Punkte 4149

Alle oben genannten Lösungen scheinen nicht in 2019 mit dem neuesten Android Studio 3.4+ 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 Quellkompatibilität und Zielkompatibilität auf 1.8 (Java 8)

Bildbeschreibung hier eingeben

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