Czy Można używać Javy 8 dla rozwoju Androida?

Przeszukując Internet, nie jest jasne, czy Java 8 jest obsługiwana dla rozwoju Androida, czy nie.

Zanim ściągnę/skonfiguruję Javę 8, czy ktoś może wskazać mi jakąś "oficjalną" dokumentację, która mówi, że Java 8 jest LUB NIE JEST OBSŁUGIWANA dla rozwoju Androida.

Author: Enzokie, 2014-04-27

21 answers

Java 8

Android obsługuje wszystkie funkcje języka Java 7 oraz podzbiór funkcji języka Java 8, które różnią się w zależności od wersji platformy.

Aby sprawdzić, które funkcje java 8 są obsługiwane

Użyj funkcji języka Java 8

Zdecydowaliśmy się dodać obsługę funkcji języka Java 8 bezpośrednio do obecnego zestawu narzędzi javac i dx oraz dezaktualizować Łańcuch narzędzi Jack. W tym nowym kierunku istniejące narzędzia i wtyczki zależą od klasy Java format pliku powinien nadal działać. W przyszłości funkcje języka Java 8 będą natywnie wspierane przez system budowania Android. W nadchodzących tygodniach zamierzamy uruchomić ten program w ramach Android Studio i chcieliśmy wcześniej podzielić się z wami tą decyzją.

Future of Java 8 Language Feature Support on Android

Użytkownicy Eclipse:

Dla starych programistów, którzy wolą Eclipse, google przestaje wspierać narzędzia programistyczne Eclipse Android

Jeśli zainstalowałeś Javę 8 JDK, następnie spróbuj, jeśli pojawią się jakiekolwiek problemy spróbuj ustawić kompilator jako 1.6 W Eclipse z menu okna → PreferencjeJavakompilator . Java 7 też będzie działać:

Preferencje Eclipse - > Java - > Kompilator

Java 7 lub wyższa jest wymagana, jeśli kierujesz Android 5.0 i wyżej.

Zainstaluj wiele JDK i spróbuj.

 164
Author: Eng. Samer T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 22:22:01

Aktualizacja 2017/11/04-Android Studio 3.0 ma teraz natywne wsparcie dla Java 8. gradle-retrolambda nie jest już potrzebny. Zobacz https://developer.android.com/studio/write/java8-support.html

Powyższy link zawiera również instrukcje migracji, jeśli używasz gradle-retrolambda. Oryginalna odpowiedź poniżej:


Android nie obsługuje Java 8. Obsługuje tylko do Javy 7 (Jeśli masz kitkat) i nadal nie ma invokedynamic, tylko nowy cukier składni.

Jeśli chcesz używać lambda, jednej z głównych funkcji Java 8 W Androidzie, możesz użyć gradle-retrolamba . Jest to zależność gradle build, która integruje retrolambda, narzędzie, które konwertuje Java 8 bajtowy kod z powrotem do Java 6/7. Zasadniczo, jeśli ustawisz kompilator w Android Studio, aby skompilował 8 bajtowy Kod Javy, pozwalając w ten sposób na lambda, przekonwertuje go z powrotem na 6/7 bajtowy kod Javy, który z kolei zostanie przekonwertowany na bajt Dalvika. To hack, jeśli chcesz wypróbować niektóre funkcje JDK 8 W Androidzie zamiast oficjalnego poparcia.

 334
Author: ekcr1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-03 22:30:29

Możesz rzeczywiście użyć gradle-retrolamba gradle build dependency, aby używać Java 8 dla rozwoju Androida.

Poniżej znajduje się kompletny przewodnik, za którym ostatnio podążałem, aby uruchomić wyrażenia lambda dla rozwoju Androida. Oryginalne źródło tego przewodnika jest wymienione na końcu.

W tym poradniku przedstawiono metodę wprowadzania niektórych funkcji Java 8 do Zaprezentowane zostaną narzędzia programistyczne Androida, mające na celu Eclipse IDE. Jednak kroki które zostaną opisane w tym przewodniku mogą być również dostosowane do nowego rozwoju Google środowisko, Android Studio. Opiera się na wydaniu społeczności popularnego IntelliJ Idea IDE by JetBrains i niedawno został uaktualniony do wersji "beta" przez Google na początku lipca 2014, nieco przed napisaniem tego poradnika. Zaćmienie pozostanie jako wybitny środowiska programistycznego, przynajmniej na jakiś czas, a biorąc pod uwagę fakt, że większość projektów Androida została opracowany przy użyciu Eclipse, a metoda wprowadzania nowych funkcji Java 8, takich jak wyrażenia lambda do ADT wydaje się być bardzo przydatny dla programistów.

Rozwój Androida opiera się na niestandardowej implementacji Javy o nazwie Projekt Apache Harmony, który został zakończony w 2011 roku. Najbardziej powszechnie używaną składnią Javy w rozwoju Androida jest Java 6 (v1.6) i Java 7 (v1.7) jest również częściowo obsługiwana w edycji KitKat (Android 4.4.+). Dlatego Java 8 posiada takie funkcje jak lambda wyrażenia nie może być używany bezpośrednio w rozwoju aplikacji na Androida bez wprowadzenie pewnych poprawek do narzędzi programistycznych. Na szczęście te konstrukty to w zasadzie pewne "cukry składniowe" ulepszenia, które daj programistom niedociągnięcia takich rzeczy jak "anonimowe klasy" i można je przetłumaczyć na klasy Java 6 lub Java 7.

Ostatnie podejście do tłumaczenia kodu źródłowego Java 8 na niższą Javę wersje nazywa się RetroLambda . Biblioteka ta tworzy developers run Kod Java 8 z wyrażeniami lambda na Javie 7 lub nawet niższej. Niestety funkcje Javy 8 inne niż wyrażenia lambda nie są na razie wspierana przez Retrolambdę, ale koncepcja wyrażeń lambda jest największym krokiem na platformie Java 8 i jest doskonałym narzędziem do Programiści Androida w każdym razie.

Szczegóły dotyczące tej biblioteki można znaleźć na jej stronie GitHub:

Https://github.com/orfjackal/retrolambda#getting-started

Również wtyczka Gradle dla RetroLambda stworzona przez innego dewelopera pozwala na implementację kompilacji opartych na Gradle w Javie lub Androidzie Projekty. Jednak deweloper wspomina tylko o integracji tego wtyczka do środowiska Android Studio. Szczegóły można znaleźć na jego Strona GitHub:

Https://github.com/evant/gradle-retrolambda

Wykorzystanie tych infrastruktur w rozwoju opartym na Eclipse do środowiska nie można podejść bezpośrednio ale to jest wykonalne i będzie przedstawione w niniejszym przewodniku.

Przygotowanie

Ten przewodnik zakłada, że czytelnik ma podstawową wiedzę na temat rozwoju Androida i jest oparty na wersji ADT 22.6.2, ponieważ ostatnia wersja ADT 23.0.2 wydaje się mieć problemy, takie jak tworzenie folderów układu. Szczegóły na ten temat można znaleźć pod poniższym link:

Http://code.google.com/p/android/issues/detail?id=72591

Kroki w tym przewodniku zostaną podane dla Windows 8.1, 64-bitowej maszyny programistycznej, ale można je łatwo dostosować do innych platform. Nowy system build Gradle będzie używany do procesów build/clean i zostanie również dostarczona procedura jego instalacji. Ponadto zarówno JDK 8, jak i JDK 7 muszą współistnieć na maszynie programistycznej. Aby zainstalować, należy postępować zgodnie z poniższymi krokami oni:

  • przejdź do strony podglądu wczesnego dostępu JDK 8 http://jdk8.java.net
  • Pobierz JDK 8u20 i zainstaluj go. Instalacja JRE 8 nie jest konieczna i można ją pominąć]}
  • przejdź do strony najnowszej stabilnej wersji JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
  • Pobierz JDK 7u65 i zainstaluj go. Instalacja JRE 7 ponownie nie jest konieczna i można ją pominąć]}
  • Dodaj JDK 8 katalog domowy i katalog JDK 8 bin do zmiennej %PATH%
  • Utwórz nową zmienną środowiskową JAVA_HOME z wartością ścieżki katalogu domowego JDK 8
  • ponownie utwórz nową zmienną środowiskową JAVA8_HOME z wartością ścieżki katalogu domowego JDK 8
  • Utwórz nową zmienną środowiskową JAVA7_HOME z wartością ścieżki katalogu domowego JDK 7
  • Otwórz okno terminala i uruchom polecenie java -version i sprawdź, czy Java 8 jest uruchomiona i działa
  • Run javac -version w tym samym oknie i sprawdzić, czy kompilator JDK 8 Java jest również uruchomiony

Teraz ADT - 22.6.2 należy pobrać z poniższego linku:

Http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip

  • Pobierz ADT i rozpakuj jego zawartość do folderu, np. D:\adt
  • Zdefiniuj nową zmienną środowiskową o nazwie ANDROID_HOME z wartością ścieżki folderu instalacyjnego ADT, np. D:\adt\sdk
  • Dodaj swoje Andoid SDK Platform Tools i Andoid SDK Tools foldery, np. D:\adt\sdk\tools i D:\adt\sdk\platform-tools, do zmiennej %PATH%
  • Utwórz skrót do Eclipse IDE jeśli chcesz. Znajduje się w folderze instalacyjnym ADT, np. D:\adt\eclipse
  • Uruchom Eclipse IDE i utwórz przestrzeń roboczą, np. D:\adt\workspace
  • kliknij na przycisk Android SDK Manager, który znajduje się na pasku narzędzi
  • wybierz tylko Android SDK Build tools Rev. 19.1 i Android Support Library. Usuń zaznaczenie wszystkiego innego i zainstaluj te dwa pakiety.

Jeśli wszystko pójdzie dobrze, ADT będzie uruchomiony.

Zaleca się również instalację następujących narzędzi:

  • Eclipse Kepler Java 8 Support: sprawia, że Eclipse rozpoznaje nowe rozszerzenia składni Java 8 i pozwala pozbyć się irytujących red dots w edytorze kodu Java. Może być zainstalowany przez Help -> Install New Software W Eclipse. Enter http://download.eclipse.org/eclipse/updates/4.3-P-builds / do pola Work with i dalej do zainstaluj.

  • Nodeclipse / Enide Gradle: służy głównie do podświetlania słów kluczowych w języku Groovy. Groovy jest używany jako DSL dla skryptów Gradle build. Ta wtyczka może być zainstalowana przez Eclipse Marketplace. Jednak Eclipse w ADT-22.6.2 nie występuje wraz z Eclipse Marketplace Client. Dlatego najpierw musisz zainstalować Eclipse Marketplace Client za pomocą narzędzia Install New Software w Eclipse. Wprowadź http//: download. eclipse. org/mpc/ Kepler / w pole Work with i kontynuuj instalację. Po zainstalowaniu Eclipse Marketplace Client, można może wyszukać Nodeclipse/Enide Gradle w Eclipse Marketplace Client i zainstalować go.

  • Wirtualne urządzenie Genymotion: jest doskonałym zamiennikiem domyślnego Android Virtual Device, który jest dołączony do ADT. AVD jest irytująco uciążliwy i utrzymuje się bez powodu. Genymotion sprawia, że przygotowujesz Android VD za pomocą obrazów CyanogenMod, które są wykonywane przez Oracle VirtualBox. Jego licencja dla jednego użytkownika jest darmowa i można ją pobrać z http://www.genymotion.com . tylko login jest wymagane i może być również zintegrowany z Eclipse. Szczegóły można znaleźć pod:

Https://cloud.genymotion.com/page/doc/#collapse8

W 2007 roku firma została założona przez firmę Microsoft, a jej siedziba mieści się w Nowym Jorku.]}

Tutaj wpisz opis obrazka

[99]}można go uznać za pełnoprawne urządzenie z Androidem działające na komputerze osobistym opartym na x86 lub x64. W celu korzystania z usług Google, takich jak Google PlayStore na tym wirtualnym urządzeniu, obraz gapps dla Wersja Androida, której używa, musi być flashowana na urządzeniu. Odpowiedni obraz gapps dla urządzenia można pobrać ze strony internetowej CyanogenMod:

Http://wiki.cyanogenmod.org/w/Google_Apps

Instalacja Gradle jest opcjonalna, ponieważ jest również dostarczana przez Android SDK, ale jego oddzielna instalacja jest wysoce zalecana. Instalacja może być przeprowadzona przez następujące kroki:

  • Przejdź do strony Gradle: http://www.gradle.org/

  • Klik Downloads

  • pod Previous Releases wybierz wersję 1.10 i pobierz albo gradle-1.10-all.zip lub gradle-1.10-bin.zip
  • rozpakuj jego zawartość do folderu, np. D:\adt\gradle
  • Zdefiniuj nową zmienną środowiskową o nazwie GRADLE_HOME z wartością ścieżki folderu instalacyjnego Gradle, np. D:\adt\gradle
  • Dodaj swój folder binarny Gradle, np. D:\adt\gradle\bin, do zmiennej %PATH%
  • Otwórz a okno terminala i uruchom polecenie gradle -v i sprawdź, czy działa Jeśli doszedłeś do tego momentu pomyślnie, oznacza to, że jesteś gotowy do utworzenia pierwszej aplikacji na Androida przy użyciu funkcji Java 8.

Aplikacja Demo

Zostanie utworzona prosta aplikacja, która zademonstruje wykorzystanie narzędzi opisanych w poprzedniej sekcji. Możesz po prostu wykonać poniższe kroki, aby uzyskać wgląd w używanie wyrażeń lambda w Android Developer Narzędzia:

    [146]}Uruchom Eclipse IDE i utwórz nową aplikację na Androida, wybierając [48]}
  • wypełnij poniższy formularz:

Tutaj wpisz opis obrazka

  • po prostu kliknij przycisk Next na następujących formularzach i kliknij przycisk Finish na ostatnim. Poczekaj, aż ADT zakończy ładowanie projektu
  • kliknij prawym przyciskiem myszy projekt i wybierz New -> Folder i nazwij go builders
  • kliknij prawym przyciskiem myszy folder gen (Generated Java Files) i usuń go. Gradle wygeneruje dla nas te same pliki wkrótce i dodamy je do projektus build path. Thegen ' folder utworzony przez domyślnego konstruktora Ant nie jest już potrzebny, a artefakty w tym folderze będą przestarzałe
  • Utwórz następujące pliki wsadowe w folderze builders:

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Wypełnij te pliki wsadowe jako follows:

Gradle_build.cmd:

Tutaj wpisz opis obrazka

Gradle_post_build.cmd:

Tutaj wpisz opis obrazka

Gradle_clean.cmd:

Tutaj wpisz opis obrazka

  • Un-select Project -> Build Automatically opcja menu
  • [146]}kliknij prawym przyciskiem myszy na projekcie i wybierz Properties -> Builders i usuń zaznaczenie wszystkich domyślnych konstruktorów dostarczonych przez ADT
  • kliknij przycisk New w tym samym oknie i wybierz Program i kliknij OK
  • pojawi się nowe okno konfiguracji konstruktora. Wypełnij swoje karty w następujący sposób:

Main Zakładka nowej konfiguracji konstruktora

Tutaj wpisz opis obrazka

Refresh Zakładka nowej konfiguracji konstruktora

Tutaj wpisz opis obrazka

Environment Zakładka nowej konfiguracji konstruktora

Tutaj wpisz opis obrazka

Build Options Zakładka nowego budowniczego Konfiguracja

Tutaj wpisz opis obrazka

  • Utwórz drugi konstruktor o nazwie Gradle_Post_Build, który używa gradle_post_build.cmd jako swojego programu. Wszystkie inne ustawienia tego kreatora muszą być dokładnie takie same jak wcześniej utworzony Kreator. Ten konstruktor będzie odpowiedzialny za skopiowanie artefaktów utworzonych w procesie budowania do folderu bin.
  • Utwórz trzeciego konstruktora o nazwie Gradle_Cleaner, który używa gradle_clean.cmd jako swojego programu. Tylko Run the builder ustawienie w ostatniej karcie musi być ustawione jako During a Clean. Wszystkie inne ustawienia tego konstruktora muszą być dokładnie takie same z pierwszym konstruktorem. Ten konstruktor będzie odpowiedzialny za czyszczenie artefaktów utworzonych w procesie budowania, jak sama nazwa wskazuje.

Nowi Budowniczowie projektu HelloLambda

Tutaj wpisz opis obrazka

  • kliknij prawym przyciskiem myszy projekt i wybierz Export
  • Wybierz Android -> Generate Gradle Build Files i kliknij Next
  • Wybierz projekt w następnym oknie i kliknij Finish
  • idź do swojego katalog główny projektu i usuń pliki gradlew i gradlew.bat. Usuń również gradle folder
  • przełącz się z powrotem na Eclipse i wybierz opcję menu Project -> Clean. Wypełnij formularz, który wyświetla się w następujący sposób:

Clean Project okno

Tutaj wpisz opis obrazka

  • kliknij OK i poczekaj, aż proces czyszczenia się zakończy
  • Dodaj fragment kodu Javy podany poniżej zaraz po wywołaniu setContentView funkcji w twoim MainActivity Klasa:

Tutaj wpisz opis obrazka

  • Zmień początek pliku build.gradle na sourceCompatibility w następujący sposób:

Tutaj wpisz opis obrazka

  • kliknij prawym przyciskiem myszy projekt i wybierz opcję Properties -> Java Compiler i ustaw wszystkie poziomy zgodności na Java 8. To sprawi, że Eclipse rozpozna nowe konstrukcje Java 8, takie jak wyrażenia lambda.
  • kliknij No w oknie powiadomień
  • kliknij prawym przyciskiem myszy projekt i wybierz Build project. Zaćmienie zacznie się budowa projektu.

Proces Budowy Tutaj wpisz opis obrazka

  • Kliknij prawym przyciskiem myszy projekt i przejdź do Properties -> Java Build Path. Dodaj następujące foldery do ścieżki budowania (również pokazanej na poniższym obrazku):

    • build\source\buildConfig\debug
    • build\source\r\debug

Tutaj wpisz opis obrazka

Eclipse będzie teraz w stanie rozpoznać pliki R.java i buildConfig.java i nie wyświetli żadnych red dots, które oznaczają błędy związane z plikami zasobów projekt.

  • Utwórz nowy Run Configuration dla swojej platformy docelowej Android, klikając prawym przyciskiem myszy projekt, a następnie wybierając Run As -> Run Configurations. Na przykład, ta aplikacja demonstracyjna wygląda jak pokazano poniżej na Genymotion VD:

HelloLambda Application

Tutaj wpisz opis obrazka

W oknie LogCat można zauważyć, że fragment kodu z prostym wyrażeniem lambda działa poprawnie

Tutaj wpisz opis obrazka

Source: Using Java 8 Lambda Wyrażenia w narzędziach programistycznych Androida

 97
Author: Sufiyan Ghori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-08 12:45:57

Pod tym linkiem znajdziesz nowe aktualizacje. Użyj funkcji języka Java 8

Stara ODPOWIEDŹ

Od Android N preview uwolnij wsparcie dla Androida ograniczone Funkcje Java 8 Zobacz Java 8 funkcje językowe

Aby zacząć korzystać z tych funkcji, musisz pobrać i skonfigurować Android Studio 2.1 oraz Android N Preview SDK, który zawiera wymagany Jack toolchain i zaktualizowany Android Plugin dla Gradle. Jeśli nie masz jeszcze zainstalowanego zestawu SDK Android N Preview, zobacz Skonfiguruj do rozwijania dla Androida N .

Obsługiwane funkcje języka Java 8 i interfejsy API

Android nie obsługuje obecnie wszystkich funkcji języka Java 8. Jednak następujące funkcje są teraz dostępne podczas tworzenia aplikacji celowanie w Podgląd Androida N:

Domyślne i statyczne metody interfejsu

Lambda wyrażenia (dostępne również na poziomie API 23 i niższym)

Adnotacje powtarzalne

Odniesienia do metod (dostępne również na poziomie API 23 i niższym)

Istnieje kilka dodatkowych funkcji Java 8, które obsługują Android, możesz zobaczyć pełne szczegóły z Java 8 funkcje językowe

Update

Uwaga: Android N opiera swoją implementację wyrażeń lambda na anonimowe zajęcia. Takie podejście pozwala im do tyłu kompatybilny i wykonywalny we wcześniejszych wersjach Androida. Aby przetestować wyrażenia lambda we wcześniejszych wersjach, pamiętaj, aby przejść do swojej buduj.pliku gradle i ustaw kompilacjedkversion i targetSdkVersion na 23 lub mniej.

Update 2

Teraz Android studio 3.0 stabilne wydanie wsparcie biblioteki Java 8 i funkcje języka Java 8 (bez kompilatora Jack).

 42
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-26 07:17:29

Android używa Javy, która odgałęzia się od Javy 6.

Od wersji Android SDK 19, możesz używać funkcji Java 7 , wykonując to . Brak pełnego wsparcia dla Java 8 (jeszcze).

 19
Author: chaqke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-21 23:40:56

Tak, Android Obsługuje Teraz Javę 8 (24.1.17)

Teraz jest to możliwe

Ale musisz mieć rom urządzenia uruchomiony na java 1.8 i włączyć "jackOptions", aby go uruchomić. Jack to nazwa nowego kompilatora Androida, który działa w Javie 8

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

Dodaj te linie do build_gradle

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

Java 8.0, Ale nadal nie akceptuje składnia Javy 8 po sprawdzeniu i nie można teraz wybrać kompilatora z android studio. Możesz jednak użyć wtyczki scala, jeśli potrzebujesz funkcjonalnego mechanizmu programowania w swoim kliencie Androida.

Tutaj wpisz opis obrazka

 18
Author: sivi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 18:37:10

Android oficjalnie wspiera Javę 8 od Androida N.

Ogłoszenia fabularne są tutaj, ogłoszenie w języku Java 8 to:

Ulepszona obsługa języka Java 8 - cieszymy się, że możemy wprowadzić funkcje języka Java 8 na Androida. Dzięki kompilatorowi Jack Androida możesz teraz korzystać z wielu popularnych funkcji języka Java 8, w tym lambda i więcej, na Androida w wersjach sięgających Gingerbread. Nowe funkcje pomóż zmniejszyć kod kotła. Na przykład, lambda może zastąpić anonimowe zajęcia wewnętrzne podczas dostarczania słuchaczy zdarzeń. Niektóre Java 8 funkcje językowe-jak metody domyślne i statyczne, strumienie i funkcjonalne interfejsy -- są teraz również dostępne na N i wyżej. Z Jack, z niecierpliwością czekamy na bliższe śledzenie języka Java zachowując kompatybilność wsteczną.

 14
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-10 05:09:54

Natywna Java 8 pojawia się na Androida! Nareszcie!

Usuń wtyczkę Retrolambda i blok retrolambda z każdego modułu buduj.plik gradle:

Aby wyłączyć Jack i przełączyć się na domyślny toolchain, po prostu usuń jackOptions blokuje budowę Twojego modułu.gradle file

Aby rozpocząć korzystanie z obsługiwanych funkcji języka Java 8, zaktualizuj wtyczkę Androida do wersji 3.0.0 (lub wyższej)

Począwszy od Android Studio 3.0, funkcje języka Java 8 są teraz natywnie wspierany przez Androida:

  • wyrażenia Lambda
  • odniesienia do metody
  • Typ adnotacji (obecnie informacje o adnotacji typu nie są dostępne w czasie wykonywania, ale tylko w czasie kompilacji);
  • powtarzające się adnotacje
  • Na poziomie API 24 lub wyższym, bez obsługi natychmiastowego uruchamiania tho);

Również z poziomu min API 24 następujące API Java 8 są dostępne:

  • java.util.strumień
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.adnotacja.Repeatable
  • java.lang.zastanów się./ Align = "left" / getAnnotationsByType (Class)
  • java.lang.zastanów się.Metoda.isDefault ()

Dodaj te linie do kompilacji modułu aplikacji.gradle informuje projekt o poziomie językowym:

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

Wyłącz obsługę funkcji języka Java 8, dodając do Twój gradle.właściwości plik:

android.enableDesugar=false
Jesteś skończony! Możesz teraz używać natywnej java8!
 12
Author: Dhaval Jivani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-27 04:03:16

Możemy używać Javy 8 używając:

  1. W budowie.gradle (projekt: myProject) add following

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
    
  2. W budowie.gradle (moduł: myModule) add following

    apply plugin: 'me.tatarka.retrolambda'
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
 11
Author: Vishal Raj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-03 12:31:21

Android Studio 3.0 zaczął dostarczać wbudowaną obsługę niektórych funkcji języka Java 8, które są:

  • wyrażenia Lambda
  • odniesienia do metody
  • Typ adnotacji (informacje są dostępne w czasie kompilacji, ale nie w czasie wykonywania)
  • powtarzające się adnotacje
  • domyślne i statyczne metody interfejsu

Również począwszy od poziomu API 24 następujące API Java 8 są dostępne:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
  • java.lang.reflect.Method.isDefault()

Poza tym, wsparcie try-with-resources zostało rozszerzone na wszystkie poziomy API Androida.

Więcej funkcji Java 8 zostanie dodanych w przyszłości.

Aby rozpocząć korzystanie z obsługiwanych funkcji języka Java 8, zaktualizuj system Android plugin do 3.0.0-alpha1 (lub nowszy) i dodaj do swojego Budowa modułu.gradle plik:

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

Po Więcej szczegółów Odwiedź:
https://developer.android.com/studio/write/java8-support.html

 7
Author: Idolon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-05 10:52:10

Kiedy zadałem to pytanie prawie 2 lata temu, odpowiedź naprawdę brzmiała "oficjalnie" nie, ale jak wskazuje odpowiedź ekcr1, możesz uzyskać jedną z najbardziej oczekiwanych funkcji (lambda) do pracy, jeśli używasz retrolamba. W tym czasie nadal używałem eclipse, ponieważ Android Studio było w trybie "podglądu", więc nigdy nie podążałem tą ścieżką.

Dzisiaj myślę, że" oficjalna " odpowiedź nadal brzmi NIE, i chociaż retrolamba nadal wydaje się dobrym sposobem, jest inna opcja dla tych chętnych do zejścia nieco "nieoficjalną" drogą można pokonać, a mianowicie Kotlin.

Dzisiaj Kotlin osiągnął 1.0.0. Dla tych, którzy nie znają Kotlina, więcej informacji można znaleźć na ich stronie internetowej TUTAJ:

Https://kotlinlang.org

Lub obejrzyj filmik utube z rozmowy Jake ' a Whartona

Https://www.youtube.com/watch?v=A2LukgT2mKc

 5
Author: nPn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-16 00:47:23

Najnowsze wiadomości:

Google ogłasza, że z Androidem N i Android Studio 2.1+, platforma będzie obsługiwać Java 8. Ukazała się również stabilna wersja studio 2.1.

W końcu możemy używać wyrażeń lambda. Koniec z filtrowaniem listy w pętli for. Horeeey.

 4
Author: asozcan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-27 07:56:38

Dodaj tę konfigurację.gradle i sync gradle:

android {
    ...
    defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        // or
        //sourceCompatibility 1.8
        //targetCompatibility 1.8
    }
}
 4
Author: Ahmad Aghazadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-15 09:59:36

Google właśnie ogłosiło, że Java 8 będzie natywnie wspierana przez Androida i że łańcuch narzędzi Jack zostanie wycofany:

Zdecydowaliśmy się dodać obsługę funkcji języka Java 8 bezpośrednio do obecnego zestawu narzędzi javac i dx i zdezaktualizować Łańcuch narzędzi Jack. W tym nowym kierunku istniejące narzędzia i wtyczki zależne od formatu pliku klasy Java powinny nadal działać. W przyszłości funkcje języka Java 8 będą natywnie wspierane przez system budowania Android. W nadchodzących tygodniach zamierzamy uruchomić ten program w ramach Android Studio i chcieliśmy wcześniej podzielić się z wami tą decyzją.

Więcej informacji tutaj: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

 2
Author: stamanuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-15 07:38:24

Tak. Wkrótce użyjemy Javy 8!

Zdecydowaliśmy się dodać obsługę funkcji języka Java 8 bezpośrednio do obecnego zestawu narzędzi javac i dx i zdezaktualizować Łańcuch narzędzi Jack. W tym nowym kierunku istniejące narzędzia i wtyczki zależne od formatu pliku klasy Java powinny nadal działać. W przyszłości funkcje języka Java 8 będą natywnie wspierane przez system budowania Android. Zamierzamy uruchomić to w ramach Android Studio w nadchodzących tygodniach, a my chciałem podzielić się tą decyzją wcześniej z Tobą.

Https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

 2
Author: Ajay S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-16 06:18:33

Napisałem podobną odpowiedź do podobne pytanie na Stack Overflow, ale oto część tej odpowiedzi.

Android Studio 2.1:

Nowa wersja Android Studio (2.1) ma wsparcie dla funkcji Java 8. Oto fragment postu Android Developers blogspot :

... Android Studio 2.1 zawiera wsparcie dla nowego kompilatora Jack i wsparcie dla Java 8 .

...

Aby użyć Funkcje języka Java 8 podczas tworzenia Z N Developer Preview należy użyć kompilatora Jack. Kreator nowego projektu [Plik→ Nowy→ projekt] generuje odpowiednie konfiguracje dla projektów skierowanych na N.


Przed Android Studio 2.1:

Android nie obsługuje jeszcze Java 1.8 (obsługuje tylko do 1.7), więc nie można używać funkcji Java 8, takich jak lambda.

Ta odpowiedź daje więcej szczegółów na temat zgodności Android Studio ; to Stany:

Jeśli chcesz używać lambda, jednej z głównych funkcji Javy 8 W Androidzie, możesz użyć gradle-retrolamba

Jeśli chcesz dowiedzieć się więcej o używaniu gradle-retrolambda, ta odpowiedź daje wiele szczegółów na ten temat.

 1
Author: Farbod Salamat-Zadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:10

Pomyślałem, że opublikuję zaktualizowaną odpowiedź dla tych, którzy szukają czegoś bardziej aktualnego.

Obecnie Android i Android Studio obsługują podzbiór funkcji Java 8. Według dokumentacji Androida znajdującej się na ich stronie internetowej, Google mówi:

Obsługa funkcji języka Java 8 wymaga nowego kompilatora o nazwie Jack. Jack jest obsługiwany tylko w Android Studio 2.1 i nowszych. Więc jeśli chcesz korzystać z funkcji języka Java 8, musisz Użyj Android Studio 2.1, aby zbudować swoją aplikację.

Jeśli masz już zainstalowany Android Studio, upewnij się, że zaktualizowałeś do najnowszej wersji, klikając Pomoc > Sprawdź aktualizację (na Mac, Android Studio > Sprawdź aktualizacje). Jeśli nie masz jeszcze zainstalowanego IDE na swojej stacji roboczej, Pobierz Android Studio tutaj.

Obsługiwane funkcje języka Java 8 i interfejsy API

Android nie obsługuje wszystkich funkcji języka Java 8. Jednak następujące cechy są dostępne podczas tworzenia aplikacji kierowanych na Androida 7.0 (poziom API 24):

  • domyślne i statyczne metody interfejsu wyrażenia Lambda (dostępne również na poziomie API 23 i niższym)
  • adnotacje powtarzalne
  • odniesienia do metod (dostępne również na poziomie API 23 i niższym)
  • adnotacje typu (dostępne również na poziomie API 23 i niższym)

Dodatkowo dostępne są następujące interfejsy API języka Java 8:

Refleksja i interfejsy API związane z językiem:

  • java.lang.FunctionalInterface
  • java.lang.adnotacja.Repeatable
  • java.lang.zastanów się.Metoda.IsDefault() i Reflection API związane z powtarzalnymi adnotacjami, takimi jak / Align = "left" / getAnnotationsByType (Class)

Utility API:

  • java.util.function
  • java.util.strumień

Aby korzystać z nowych funkcji języka Java 8, musisz użyj również zestawu narzędzi Jack . Ten nowy Android toolchain kompiluje Źródła języka Java do czytelnego dla Androida kodu bajtowego DEX, ma swój własny .format biblioteki jack i zapewnia większość funkcji toolchain jako część jednego narzędzia: przepakowywanie, zmniejszanie, zaciemnianie i multidex.

Oto porównanie dwóch łańcuchów narzędzi używanych do tworzenia plików DEX Androida:

Legacy javac toolchain:
    javac (.java → .class) → dx (.class → .dex)
    New Jack toolchain:
    Jack (.java → .jack → .dex)
 1
Author: BlackHatSamurai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-13 22:12:14

Zadałem to pytanie ponad 3 lata temu i oczywiście odpowiedzi zmieniły się na przestrzeni lat. Jak wielu powyżej już odpowiedziało, od jakiegoś czasu odpowiedź stała się Yes . Nigdy nie zaktualizowałem zaakceptowanej odpowiedzi, ponieważ była to prawidłowa odpowiedź w tym czasie. (Nie jestem pewien, jaka jest polityka przepełnienia stosu)

Chciałem tylko dodać kolejną odpowiedź dla tych, którzy nadal szukają tego tematu. Od 17.05.2017 Google ogłosiło również, że Kotlin jest również język Oficjalny dla rozwoju Androida.

Nie znalazłem oficjalnej informacji prasowej, ale obejrzałem niektóre z filmów Google I/O , gdzie została ogłoszona. Oto link do bloga posta zespołu Kotlin w ogłoszeniu.

 1
Author: nPn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-18 11:13:26

Dodanie następującego Naprawiono problem dla mnie (Android studio 2.3.2):

Buduj.gradle (projekt)

buildscript {
repositories {
    ...
    jcenter()
}
dependencies {
    ...
    classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
    ...
   }
}

Buduj.gradle (Module: app)

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    } // SET JAVA VERSION
    ...
}
 1
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-02 17:18:35

Podzbiór Javy 8 jest teraz obsługiwany w Android Studio. Po prostu dokonaj korekt zgodności źródłowej i docelowej z poniższego okna:

Plik -- > Struktura Projektu

Okno Regulacji

Więcej informacji znajduje się w poniższym linku.

Https://developer.android.com/studio/write/java8-support.html

 1
Author: Fio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-03 21:47:44

Najprostszy sposób

Możesz włączyć obsługę java 1.8 Dla projektu android.

  • Otwarta Struktura Projektu

    • Albo naciskając Ctrl + Shift + Alt + S

    • Lub File > Project Structure

  • Zaktualizuj Zgodność źródłową i Zgodność docelową do 1.8 W oknie dialogowym struktura projektu, jak pokazano (kliknij plik > projekt Struktura).

obraz

Uwaga: Obsługa Java 1.8 może być włączona dla Android Studio 3.0.0 lub nowszego. Więcej informacji można znaleźć w dokumentacji .

 0
Author: Khemraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 07:59:12