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.

353voto

ekcr1 Punkte 4514

UPDATE 2017/11/04 - Android Studio 3.0 hat jetzt nativen Support für Java 8. gradle-retrolambda wird jetzt nicht mehr benötigt. Siehe https://developer.android.com/studio/write/java8-support.html

Der obige Link enthält auch Migrationsanweisungen, wenn Sie gradle-retrolambda verwenden. Originalantwort unten:


Android unterstützt kein Java 8. Es unterstützt nur bis Java 7 (wenn Sie Kitkat haben) und hat immer noch kein invokedynamic, 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 handelt sich um eine Gradle-Build-Abhängigkeit, die retrolambda integriert, ein Tool, das Java 8-Bytecode zurück in Java 6/7 umwandelt. Grundsätzlich, wenn Sie den Compiler in Android Studio einstellen, um Java 8-Bytecode zu kompilieren, und somit Lambdas zuzulassen, wird er ihn zurück in Java 6/7-Bytecode umwandeln, der dann wiederum in Dalvik-Bytecode umgewandelt wird. Es ist ein Hack, wenn Sie einige JDK 8-Funktionen in Android ausprobieren möchten, anstelle offizieller Unterstützung.

196voto

Eng. Samer T Punkte 6318

Java 8

Android unterstützt alle Sprachfunktionen von Java 7 und eine Untermenge der Sprachfunktionen von Java 8, die je nach Plattformversion variieren.

Um zu überprüfen, welche Funktionen von Java 8 unterstützt werden

Verwenden von Java-8-Sprachfunktionen

Wir haben beschlossen, die Unterstützung für Java 8 Sprachfunktionen direkt in das aktuelle javac- und dx-Toolset aufzunehmen und das Jack-Toolset zu veralten. Mit diesem neuen Ansatz sollten bestehende Tools und Plugins, die vom Java-Klassenformat abhängig sind, weiterhin funktionieren. Java 8 Sprachfunktionen werden zukünftig nativ vom Android-Bausystem unterstützt. Wir planen, dies in den kommenden Wochen als Teil von Android Studio zu starten, und wir wollten diese Entscheidung frühzeitig mit Ihnen teilen.

Zukunft der Unterstützung von Java 8 Sprachfunktionen auf Android

Eclipse-Benutzer:

Für alte Entwickler, die Eclipse bevorzugen, stellt Google die Unterstützung für Eclipse Android Developer-Tools ein

Wenn Sie Java 8 JDK installiert haben, versuchen Sie es, wenn Probleme auftreten, versuchen Sie, den Compiler in Eclipse aus dem Menü Einstellungen Java Compiler auf 1.6 einzustellen. Java 7 funktioniert auch:

Eclipse Einstellungen -> Java -> Compiler

Java 7 oder höher ist erforderlich, wenn Sie auf Android 5.0 und höher abzielen.

Installieren Sie mehrere JDK und versuchen Sie es.

43voto

Folgen Sie diesem Link für neue Updates. Verwenden Sie Java 8-Sprachfunktionen

Alte Antwort

Ab der Veröffentlichung des Android N-Vorabversion unterstützt Android limitierte Funktionen von Java 8 siehe Java 8-Sprachfunktionen

Um diese Funktionen zu verwenden, müssen Sie das Android Studio 2.1 herunterladen und einrichten und das Android N Preview SDK, das den erforderlichen Jack-Werkzeugsatz und aktualisierten Android-Plugin für Gradle enthält. Wenn Sie das Android N Preview SDK noch nicht installiert haben, siehe Einrichten der Entwicklungsumgebung für Android N.

Unterstützte Java 8-Sprachfunktionen und APIs

Android unterstützt derzeit nicht alle Java 8-Sprachfunktionen. Die folgenden Funktionen sind jedoch verfügbar, wenn Apps für das Android N Preview entwickelt werden:

Standard- und statische Schnittstellenmethoden

Lambda-Ausdrücke (auch auf API-Ebene 23 und niedriger verfügbar)

Wiederholbare Annotationen

Methodenreferenzen (auch auf API-Ebene 23 und niedriger verfügbar)

Es gibt einige zusätzliche Java 8-Funktionen, die von Android unterstützt werden, siehe alle Details unter Java 8-Sprachfunktionen

Aktualisierung

Hinweis: Android N basiert bei der Implementierung von Lambda-Ausdrücken auf anonymen Klassen. Diese Herangehensweise ermöglicht es ihnen, rückwärtskompatibel zu sein und auf früheren Versionen von Android ausführbar zu sein. Um Lambda-Ausdrücke auf früheren Versionen zu testen, vergessen Sie nicht, in Ihre build.gradle-Datei zu gehen und compileSdkVersion und targetSdkVersion auf 23 oder niedriger zu setzen.

Aktualisierung 2

Jetzt unterstützt die stabile Version von Android Studio 3.0 Java 8-Bibliotheken und Java 8-Sprachfunktionen (ohne den Jack-Compiler).

23voto

sivi Punkte 9816

Ja, Android unterstützt jetzt Java 8 (24.1.17)

Jetzt ist es möglich

Aber Sie müssen Ihre Geräterom auf Java 1.8 ausführen und "jackOptions" aktivieren, um es ausführen zu können. Jack ist der Name des neuen Android-Compilers, der Java 8 ausführt

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

Fügen Sie diese Zeilen zu build_gradle hinzu

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

Java 8 scheint der laufende Java-Motor von Android Studio 2.0 zu sein, Aber es akzeptiert nach meiner Überprüfung immer noch nicht die Syntax von Java 8, und Sie können jetzt keinen Compiler aus dem Android Studio wählen. Sie können jedoch das Scala-Plugin verwenden, wenn Sie einen funktionalen Programmiermechanismus in Ihrem Android-Client benötigen.

Bildbeschreibung hier eingeben

19voto

chaqke Punkte 1337

Android verwendet ein Java, das von Java 6 abzweigt.

Ab Android SDK Version 19 können Sie Java 7-Funktionen auf diese Weise verwenden. Bisher keine volle Unterstützung für Java 8.

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