Przeszukując internet, nie jest jasne, czy Java 8 jest obsługiwana dla rozwoju Androida, czy nie.
Zanim pobiorę / skonfiguruję Javę 8, czy ktoś może wskazać mi jakąkolwiek „oficjalną” dokumentację, która mówi, że Java 8 jest lub nie jest obsługiwana dla rozwoju Androida.
Odpowiedzi:
java 8
Android obsługuje wszystkie funkcje języka Java 7 i 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
Przyszłość obsługi funkcji języka Java 8 w systemie Android
Użytkownicy Eclipse:
W przypadku starych programistów, którzy preferują Eclipse, Google przestaje wspierać narzędzia programistyczne dla Androida Eclipse
jeśli zainstalowałeś JDK Java 8, spróbuj, jeśli pojawią się jakiekolwiek problemy, spróbuj ustawić kompilator na 1.6 w Eclipse z menu okna → Preferencje → Java → Kompilator . Java 7 również będzie działać:
zainstaluj wiele JDK i spróbuj.
źródło
AKTUALIZACJA 2017/11/04 - Android Studio 3.0 ma teraz natywną obsługę Java 8. Nie
gradle-retrolambda
jest już potrzebny. Zobacz https://developer.android.com/studio/write/java8-support.htmlPowyż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 Java 7 (jeśli masz KitKat) i nadal nie ma wywoływanej dynamiki, tylko nowy cukier składniowy.
Jeśli chcesz używać lambdas, jednej z głównych funkcji Java 8 w systemie Android, możesz użyć gradle-retrolamba . Jest to zależna od wersji kompilacja, która integruje retrolambda, narzędzie konwertujące kod bajtowy Java 8 z powrotem na Javę 6/7. Zasadniczo, jeśli ustawisz kompilator w Android Studio na kompilowanie kodu bajtowego Java 8, co pozwoli na lambdas, przekonwertuje go z powrotem na kod bajtowy Java 6/7, który z kolei zostanie przekonwertowany na kod bajtowy dalvik. To hack, jeśli chcesz wypróbować niektóre funkcje JDK 8 w Androidzie zamiast oficjalnego wsparcia.
źródło
try-with-resources
działa tylko od Kitkat.Rzeczywiście możesz użyć
gradle-retrolamba
zależności kompilacji stopniowej do korzystania z Java 8 dla rozwoju Androida.Poniżej znajduje się kompletny przewodnik, który ostatnio śledziłem, aby uruchomić wyrażenia lambda dla rozwoju Androida. Oryginalne źródło tego przewodnika jest wymienione na końcu.
Przygotowanie
W tym przewodniku założono, że czytelnik ma podstawową wiedzę na temat programowania w Androidzie i jest oparty na wersji 22.6.2 programu ADT, ponieważ wydaje się, że w najnowszej wersji 23.0.2 programu ADT występują problemy z tworzeniem folderów układu. Szczegółowe informacje na temat tego problemu można znaleźć pod następującym linkiem:
http://code.google.com/p/android/issues/detail?id=72591
Kroki w tym przewodniku zostaną podane dla 64-bitowej maszyny programistycznej Windows 8.1, ale można je łatwo dostosować do innych platform. Nowy system kompilacji
Gradle
będzie wykorzystywany do procesów kompilacji / czyszczenia, a także zapewniona zostanie procedura instalacji. Ponadto, zarównoJDK 8
iJDK 7
muszą współistnieć na maszynie rozwoju. Aby je zainstalować, należy wykonać kroki podane poniżej:bin
do swojej%PATH%
zmiennejJAVA_HOME
o wartości ścieżki do folderu domowego JDK 8JAVA8_HOME
ponownie nową zmienną środowiskową z wartością ścieżki do folderu domowego JDK 8JAVA7_HOME
o wartości ścieżki do folderu domowego JDK 7java -version
polecenie i sprawdź, czy Java 8 jest uruchomionajavac -version
komendę w tym samym oknie i sprawdź, czy kompilator Java JDK 8 jest również uruchomionyTeraz ADT-22.6.2 należy pobrać z następującego linku:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
D:\adt
ANDROID_HOME
z wartością ścieżki do folderu instalacyjnego ADT, npD:\adt\sdk
Andoid SDK Platform Tools
iAndoid SDK Tools
foldery, np.D:\adt\sdk\tools
ID:\adt\sdk\platform-tools
, do swojej%PATH%
zmiennejD:\adt\eclipse
D:\adt\workspace
Android SDK Manager
przycisk znajdujący się na pasku narzędziAndroid SDK Build tools Rev. 19.1
iAndroid Support Library
tylko. Odznacz wszystko inne i zainstaluj te dwa pakiety.Jeśli wszystko pójdzie dobrze, ADT uruchomi się.
Zdecydowanie zaleca się również instalację następujących narzędzi:
Obsługa Eclipse Kepler Java 8: Sprawia, że Eclipse rozpoznaje nowe rozszerzenia składni Java 8 i pozwala pozbyć się irytującego
red dots
edytora kodu Java. Może być zainstalowanyHelp -> Install New Software
w Eclipse. Wpisz http://download.eclipse.org/eclipse/updates/4.3-P-builds/ wWork with
polu i kontynuuj instalację.Nodeclipse / Enide Gradle: Służy głównie do wyróżnienia słów kluczowych w języku Groovy. Groovy jest używany jako DSL dla skryptów kompilacji Gradle. Wtyczkę można zainstalować za pośrednictwem
Eclipse Marketplace
. Jednak Eclipse w ADT-22.6.2 nie występujeEclipse Marketplace Client
. Dlatego najpierw musisz zainstalowaćEclipse Marketplace Client
za pomocąInstall New Software
narzędzia w Eclipse. Wpisz http //: download.eclipse.org/mpc/kepler/ wWork with
polu i kontynuuj instalację. Po zainstalowaniuEclipse Marketplace Client
, można szukaćNodeclipse/Enide Gradle
wEclipse Marketplace Client
i zainstalować go.Genymotion Virtual Device: Jest to świetny zamiennik domyślnego oprogramowania
Android Virtual Device
ADT. AVD jest denerwująco kłopotliwy i ciągle zawiesza się bez powodu. Genymotion pozwala przygotować Android VD za pomocąCyanogenMod
obrazów, które są wykonywane przez Oracle VirtualBox . Licencja dla jednego użytkownika jest bezpłatna i można ją pobrać ze strony http://www.genymotion.com . Wymagany jest tylko login i można go również zintegrować z Eclipse. Szczegóły można znaleźć pod:https://cloud.genymotion.com/page/doc/#collapse8
Poniżej znajduje się zrzut ekranu urządzenia wirtualnego CyanogenMod z systemem Android 4.3,
Można to uznać za pełnoprawne urządzenie z Androidem działające na komputerze osobistym z procesorem x86 lub x64. Aby korzystać z usług Google, takich jak
Google PlayStore
na tym urządzeniu wirtualnym,gapps
obraz używanej wersji Androida musi zostać flashowany na urządzeniu. Właściwygapps
obraz urządzenia można pobrać ze strony CyanogenMod:http://wiki.cyanogenmod.org/w/Google_Apps
Instalacja stopniowa jest opcjonalna, ponieważ zapewnia ją także sam zestaw SDK systemu Android, ale zdecydowanie zaleca się jej oddzielną instalację. Instalację można przeprowadzić, wykonując następujące kroki:
Przejdź do strony internetowej Gradle: http://www.gradle.org/
Kliknij
Downloads
Previous Releases
wybierz wersję 1.10 i pobierz plik gradle-1.10-all.zip lub gradle-1.10-bin.zipD:\adt\gradle
GRADLE_HOME
z wartością ścieżki do folderu instalacyjnego Gradle, npD:\adt\gradle
D:\adt\gradle\bin
Do%PATH%
zmiennejgradle -v
polecenie i sprawdź, czy działa poprawnie. Jeśli do tego momentu dojdziesz pomyślnie, oznacza to, że jesteś gotowy do stworzenia swojej pierwszej aplikacji na Androida przy użyciu funkcji Java 8.Aplikacja demonstracyjna
Zostanie utworzona prosta aplikacja, aby zademonstrować użycie 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 Narzędziach dla programistów Androida:
File -> New -> Other -> Android -> Android Application Project
Next
przycisk na poniższych formularzach iFinish
przycisk na ostatnim. Poczekaj, aż ADT zakończy ładowanie projektuNew -> Folder
i nazwijbuilders
gen (Generated Java Files)
folder prawym przyciskiem myszy i usuń go. Gradle wkrótce wygeneruje dla nas te same pliki i dodamy je dos build path. The
folderu projektu gen` utworzonego przez domyślnego konstruktora Ant nie jest już potrzebny, a artefakty w tym folderze będą przestarzałeUtwórz następujące pliki wsadowe w
builders
folderze:Wypełnij te pliki wsadowe w następujący sposób:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
Project -> Build Automatically
menuProperties -> Builders
i odznacz wszystkie domyślne programy budujące dostarczone przez ADTNew
przycisk w tym samym oknie, wybierzProgram
i kliknijOK
Main
Karta nowej konfiguracji KonstruktoraRefresh
Karta nowej konfiguracji KonstruktoraEnvironment
Karta nowej konfiguracji KonstruktoraBuild Options
Karta nowej konfiguracji KonstruktoraGradle_Post_Build
który używagradle_post_build.cmd
jako swojego programu. Wszystkie pozostałe ustawienia tego konstruktora muszą być dokładnie takie same z poprzednio utworzonym konstruktorem. Ten konstruktor będzie odpowiedzialny za kopiowanie artefaktów utworzonych przez proces kompilacji dobin
folderu.Gradle_Cleaner
który używagradle_clean.cmd
jako programu. TylkoRun the builder
ustawienie na ostatniej karcie musi być ustawione jakoDuring a Clean
. Wszystkie pozostałe ustawienia tego konstruktora muszą być identyczne z pierwszym konstruktorem. Ten konstruktor będzie odpowiedzialny za czyszczenie artefaktów utworzonych przez proces kompilacji, jak sugeruje nazwa.Nowi budowniczowie
HelloLambda
projektuExport
Android -> Generate Gradle Build Files
i kliknijNext
Finish
gradlew
orazgradlew.bat
. Usuń takżegradle
folderProject -> Clean
opcję menu. Wypełnij formularz, który pokazuje się w następujący sposób:Clean Project
OknoOK
i poczekaj, aż proces czyszczenia się zakończysetContentView
funkcji w swojejMainActivity
klasie:build.gradle
pliku dosourceCompatibility
sekcji w następujący sposób:Properties -> Java Compiler
opcję i ustaw wszystkie poziomy zgodności na Java 8. Dzięki temu Eclipse rozpozna nowe konstrukcje Java 8, takie jak wyrażenia lambda.No
w oknie powiadomieniaBuild project
. Eclipse rozpocznie budowę projektu.Proces kompilacji
Kliknij projekt prawym przyciskiem myszy i przejdź do
Properties -> Java Build Path
. Dodaj następujące foldery do ścieżki kompilacji (również pokazane na poniższym obrazku):build\source\buildConfig\debug
build\source\r\debug
Eclipse będzie teraz mógł rozpoznawać
R.java
ibuildConfig.java
pliki i nie będzie wyświetlał żadnych,red dots
które oznaczałyby błędy związane z plikami zasobów projektu.Run Configuration
dla docelowej platformy Android, klikając projekt prawym przyciskiem myszy, a następnie wybierającRun As -> Run Configurations
. Na przykład ta aplikacja demonstracyjna wygląda tak, jak pokazano poniżej na Genymotion VD:Aplikacja HelloLambda
W
LogCat
oknie można zauważyć, że fragment kodu z prostym wyrażeniem lambda działa poprawnieŹródło: Korzystanie z wyrażeń lambda Java 8 w narzędziach dla programistów Androida
źródło
Kliknij ten link, aby uzyskać nowe aktualizacje. Użyj funkcji języka Java 8
Stara odpowiedź
Począwszy od wersji zapoznawczej Androida N, obsługa Androida ograniczona liczba funkcji Java 8 znajduje się w części Funkcje języka Java 8
Obsługiwane funkcje językowe i interfejsy API języka Java 8
Domyślne i statyczne metody interfejsu
Wyrażenia lambda (dostępne również na poziomie API 23 i niższych)
Powtarzalne adnotacje
Referencje metod (dostępne również na poziomie API 23 i niższych)
Istnieje kilka dodatkowych funkcji Java 8, które obsługują system Android. Pełne szczegóły można znaleźć w funkcjach językowych Java 8
Aktualizacja
Aktualizacja 2
Teraz stabilne wydanie Androida studio 3.0 obsługuje biblioteki Java 8 i funkcje języka Java 8 (bez kompilatora Jack).
źródło
minSdkVersion
?Tak, Android obsługuje teraz Java 8 (24.1.17)
Teraz jest to możliwe
Ale musisz uruchomić rom urządzenia na java 1.8 i włączyć „jackOptions”, aby go uruchomić. Jack to nazwa nowego kompilatora Androida z Javą 8
https://developer.android.com/guide/platform/j8-jack.html
dodaj te linie do build_gradle
Java 8 wydaje się być działającym silnikiem Java w Android Studio 2.0, ale po sprawdzeniu nadal nie akceptuje składni java 8 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 z Androidem.
źródło
Android używa Java, która rozgałęzia się z Java 6.
Jak z Android SDK w wersji 19, można użyć Java 7 cech robiąc to . Nie ma jeszcze pełnej obsługi Java 8 (jeszcze).
źródło
Natywna Java 8 pojawia się na Androidzie! Wreszcie!
Aby rozpocząć korzystanie z obsługiwanych funkcji języka Java 8, zaktualizuj wtyczkę Androida do wersji 3.0.0 (lub nowszej)
Począwszy od Androida Studio 3.0, funkcje języka Java 8 są teraz natywnie obsługiwane przez Androida:
Również od poziomu minimum 24 API dostępne są następujące API Java 8:
Dodaj następujące wiersze do build.gradle modułu aplikacji, aby poinformować projekt o poziomie języka:
Wyłącz obsługę funkcji języka Java 8, dodając następujące elementy do pliku gradle.properties :
Jesteś skończony! Możesz teraz używać natywnego java8!
źródło
Android OFICJALNIE obsługuje Javę 8 od Androida N.
Dostępne są ogłoszenia funkcji , ogłoszenie w języku Java 8 to:
źródło
Możemy używać Java 8 przy użyciu:
W build.gradle (Project: myProject) dodaj następujące
W build.gradle (Module: myModule) dodaj następujące
źródło
AKTUALIZACJA 2020/01/17
Android Studio 4.0 obejmuje obsługę wielu interfejsów API języka Java 8 przy użyciu techniki zwanej desugaring, bez wymagania minimalnego poziomu interfejsu API dla Twojej aplikacji:
https://developer.android.com/studio/preview/features#j8-desugar
ORYGINALNY POCZTA Z 2017 ROKU
Android Studio 3.0 zaczął zapewniać wbudowaną obsługę niektórych funkcji języka Java 8, którymi są:
Począwszy od poziomu API 24, dostępne są następujące API Java 8:
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
try-with-resources
wsparcie zostało rozszerzone na wszystkie poziomy API Androida.Więcej funkcji Java 8 zostanie dodanych w przyszłości.
Więcej informacji na stronie:
https://developer.android.com/studio/write/java8-support.html
źródło
2.4.0-alpha6
). Sprawdź blok cytatów w odpowiedzi.Łatwy 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ła i Zgodność docelową do 1.8 w oknie dialogowym Struktura projektu, jak pokazano (kliknij Plik> Struktura projektu).
Lub możesz użyć gradle
Synchronizuj projekt. I to wszystko!
Uwaga: obsługę Java 1.8 można włączyć dla Androida Studio 3.0.0 lub nowszego. Zobacz dokumentację do dalszego czytania.
źródło
Kiedy zadałem to pytanie prawie 2 lata temu, odpowiedź naprawdę brzmiała „oficjalnie” nie, ale jak wskazano w odpowiedzi ekcr1, możesz uzyskać jedną z najbardziej oczekiwanych funkcji (lambdas), jeśli będziesz używać retrolamby. W tym czasie nadal korzystałem z Eclipse, ponieważ Android Studio był w trybie „podglądu”, więc nigdy nie podążałem tą ścieżką.
Dziś myślę, że „oficjalna” odpowiedź wciąż brzmi „nie” i chociaż retrolamba nadal wydaje się dobrą drogą, istnieje inna opcja dla tych, którzy chcą zejść nieco „nieoficjalną” drogą, mianowicie Kotlin.
Dzisiaj Kotlin osiągnął 1.0.0. Dla tych, którzy nie znają Kotlin, więcej informacji można znaleźć na ich stronie internetowej tutaj:
https://kotlinlang.org
lub obejrzyj ten filmik z przemową Jake'a Whartona
https://www.youtube.com/watch?v=A2LukgT2mKc
źródło
Najnowsze wiadomości:
Google ogłasza, że w systemach Android N i Android Studio 2.1+ platforma będzie obsługiwać Javę 8. Wydano również stabilną wersję studia 2.1.
Nareszcie możemy użyć wyrażeń lambda. Koniec filtrowania listy dla pętli. Horeeey
źródło
Dodaj tę konfigurację build.gradle i synchronizuj gradate:
źródło
Google właśnie ogłosił, że Java 8 będzie natywnie obsługiwana przez system Android i że zestaw narzędzi Jacka przestanie działać:
Więcej informacji tutaj: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
źródło
Tak. Wkrótce będziemy używać Java 8!
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
źródło
dodaj tę linię do modułu lvl build gradel
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
źródło
Napisałem podobną odpowiedź na podobne pytanie na temat przepełnienia stosu, ale oto część tej odpowiedzi.
Android Studio 2.1:
Nowa wersja Androida Studio (2.1) obsługuje funkcje Java 8. Oto fragment postu blogspot Android Developers :
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 lambdas.
Ta odpowiedź zawiera więcej szczegółów na temat kompatybilności Android Studio ; w Stanach:
Jeśli chcesz dowiedzieć się więcej na temat używania
gradle-retrolambda
, ta odpowiedź zawiera wiele szczegółowych informacji na ten temat .źródło
"SDK Location"
(to jest na Macu FWIW) mówi tylko:"/Users/me/Library/Android/sdk"
Czy używam Java8 - jak korzystać z Java8? Dzięki!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:
Ponadto dostępne są również następujące interfejsy API języka Java 8:
źródło
Zadałem to pytanie ponad 3 lata temu i oczywiście odpowiedzi zmieniły się na przestrzeni lat. Jak już wiele osób odpowiedziało, od dawna odpowiedź brzmi „ tak” . Nigdy nie aktualizowałem zaakceptowanej odpowiedzi, ponieważ była to wówczas poprawna odpowiedź. (Nie jestem pewien, na czym polegają zasady przepełnienia stosu)
Chciałem tylko dodać kolejną odpowiedź dla tych, którzy wciąż szukają tego tematu. Na dzień 17.05.2017 Google ogłosił również, że Kotlin jest również oficjalnym językiem programowania Androida.
Nie znalazłem oficjalnej informacji prasowej, ale obejrzałem niektóre filmy Google I / O, w których zostało ogłoszone. Oto link do postu na blogu zespołu Kotlin w ogłoszeniu.
źródło
Dodanie następującego rozwiązało problem dla mnie (Android studio 2.3.2):
build.gradle (projekt)
build.gradle (moduł: aplikacja)
źródło
Podzbiór Java 8 jest teraz obsługiwany w Android Studio. Po prostu wprowadź zmiany w Zgodności źródła i celu w oknie poniżej:
Plik -> Struktura projektu
Więcej informacji znajduje się w poniższym linku.
https://developer.android.com/studio/write/java8-support.html
źródło
AKTUALIZACJA 28.10.2019
Android Studio 4.0 rozwiązuje ten problem .
Kompilator D8 wstawia backport rodzimych interfejsów API języka Java 8 do pliku APK podczas kompilacji, a aplikacja będzie używać tego kodu zamiast natywnych interfejsów API w czasie wykonywania. Proces ten nazywa się odladzaniem .
źródło
Wszystkie powyższe rozwiązania nie wydają się działać w 2019 roku w najnowszym Android Studio 3.4+ .
Wymyśliłem idealne i aktualne rozwiązanie do migracji lub uaktualnienia projektu Android Project do Java 8 .
Rozwiązanie: Kliknij Plik -> Struktura projektu -> Moduły -> zakładka Właściwości .
Zmień Zgodność źródłową i docelową na 1.8 (Java 8)
źródło
Tak, możesz używać funkcji języka Java 8 w Android Studio, ale wersja musi być 3.0 lub nowsza. Przeczytaj ten artykuł, aby dowiedzieć się, jak korzystać z funkcji Java 8 w studiu Android.
https://bijay-budhathoki.blogspot.com/2020/01/use-java-8-language-features-in-android-studio.html
źródło
Najłatwiejszy sposób na dodanie obsługi Java 8
Po prostu dodaj go do pliku build.gradle.
źródło