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.
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
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 AndroidJeś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 → Preferencje → Java → kompilator . Java 7 też będzie działać:
Java 7 lub wyższa jest wymagana, jeśli kierujesz Android 5.0 i wyżej.
Zainstaluj wiele JDK i spróbuj.
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.
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
iAndoid SDK Tools
foldery, np.D:\adt\sdk\tools
iD:\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
iAndroid 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 przezHelp -> Install New Software
W Eclipse. Enter http://download.eclipse.org/eclipse/updates/4.3-P-builds / do polaWork 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 zEclipse Marketplace Client
. Dlatego najpierw musisz zainstalowaćEclipse Marketplace Client
za pomocą narzędziaInstall New Software
w Eclipse. Wprowadź http//: download. eclipse. org/mpc/ Kepler / w poleWork with
i kontynuuj instalację. Po zainstalowaniuEclipse Marketplace Client
, można może wyszukaćNodeclipse/Enide Gradle
wEclipse 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ówCyanogenMod
, 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.]} [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 jakGoogle 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:
- po prostu kliknij przycisk
Next
na następujących formularzach i kliknij przyciskFinish
na ostatnim. Poczekaj, aż ADT zakończy ładowanie projektu - kliknij prawym przyciskiem myszy projekt i wybierz
New -> Folder
i nazwij gobuilders
- 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. The
gen ' 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:
Gradle_post_build.cmd:
Gradle_clean.cmd:
- Un-select
Project -> Build Automatically
opcja menu
[146]}kliknij prawym przyciskiem myszy na projekcie i wybierz - kliknij przycisk
New
w tym samym oknie i wybierzProgram
i kliknijOK
- pojawi się nowe okno konfiguracji konstruktora. Wypełnij swoje karty w następujący sposób:
Properties -> Builders
i usuń zaznaczenie wszystkich domyślnych konstruktorów dostarczonych przez ADT
Main
Zakładka nowej konfiguracji konstruktora
Refresh
Zakładka nowej konfiguracji konstruktora
Environment
Zakładka nowej konfiguracji konstruktora
Build Options
Zakładka nowego budowniczego Konfiguracja
- Utwórz drugi konstruktor o nazwie
Gradle_Post_Build
, który używagradle_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 folderubin
. - Utwórz trzeciego konstruktora o nazwie
Gradle_Cleaner
, który używagradle_clean.cmd
jako swojego programu. TylkoRun the builder
ustawienie w ostatniej karcie musi być ustawione jakoDuring 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
- kliknij prawym przyciskiem myszy projekt i wybierz
Export
- Wybierz
Android -> Generate Gradle Build Files
i kliknijNext
- Wybierz projekt w następnym oknie i kliknij
Finish
- idź do swojego katalog główny projektu i usuń pliki
gradlew
igradlew.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
- kliknij
OK
i poczekaj, aż proces czyszczenia się zakończy - Dodaj fragment kodu Javy podany poniżej zaraz po wywołaniu
setContentView
funkcji w twoimMainActivity
Klasa:
- Zmień początek pliku
build.gradle
nasourceCompatibility
w następujący sposób:
- 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
-
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
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ącRun As -> Run Configurations
. Na przykład, ta aplikacja demonstracyjna wygląda jak pokazano poniżej na Genymotion VD:
HelloLambda Application
W oknie LogCat
można zauważyć, że fragment kodu z prostym wyrażeniem lambda działa poprawnie
Source: Using Java 8 Lambda Wyrażenia w narzędziach programistycznych Androida
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)
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).
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).
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.
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ą.
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!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:
-
W budowie.gradle (projekt: myProject) add following
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
-
W budowie.gradle (moduł: myModule) add following
apply plugin: 'me.tatarka.retrolambda' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
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
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:
Lub obejrzyj filmik utube z rozmowy Jake ' a Whartona
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.
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
}
}
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
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
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.
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)
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.
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
...
}
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
Więcej informacji znajduje się w poniższym linku.
Https://developer.android.com/studio/write/java8-support.html
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).
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 .
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