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.
W tym przewodniku zostanie zaprezentowana metoda wprowadzenia niektórych funkcji Java 8 do Narzędzi programistycznych dla systemu Android, szczególnie ukierunkowana na
środowisko Eclipse IDE. Jednak kroki opisane w tym przewodniku można również dostosować do nowego środowiska programistycznego powstania Google, Android Studio. Opiera się na wydaniu społecznościowym popularnego IntelliJ Idea IDE autorstwa JetBrains, a ostatnio został zaktualizowany do wersji beta przez Google na początku lipca 2014 r., Nieco przed napisaniem tego przewodnika. Eclipse pozostanie ważnym środowiskiem programistycznym, przynajmniej przez jakiś czas, a biorąc pod uwagę fakt, że większość projektów na Androida zostało opracowanych przy użyciu Eclipse, metoda wprowadzania nowych funkcji Java 8, takich jak wyrażenia lambda do ADT, wydaje się bardzo przydatna dla programistów.
Android Development opiera się na niestandardowej implementacji Java o nazwie Apache Harmony Project, która została zakończona w 2011 roku. Najczęściej stosowaną składnią Java w Android Development jest Java 6 (wersja 1.6), a Java 7 (wersja 1.7) jest również częściowo obsługiwana na edycja KitKat (Android 4.4. +). Dlatego funkcje Java 8, takie jak wyrażenia lambda, nie mogą być używane bezpośrednio w tworzeniu aplikacji na Androida bez zastosowania drobnych poprawek w narzędziach programistycznych. Na szczęście te konstrukcje są w zasadzie niektórymi ulepszeniami „cukru syntaktycznego”, które dają programistom wady takich rzeczy jak „anonimowe klasy” i mogą być przetłumaczone na klasy Java 6 lub Java 7.
Najnowsze podejście do tłumaczenia kodu źródłowego Java 8 na niższe wersje Java nazywa się RetroLambda . Ta biblioteka sprawia, że programiści uruchamiają kod Java 8 z wyrażeniami lambda na Javie 7 lub nawet niższej. Niestety funkcje Java 8 inne niż wyrażenia lambda nie są na razie obsługiwane przez RetroLambda, ale koncepcja wyrażeń lambda jest największym skokiem na platformie Java 8 i jest świetnym narzędziem dla programistów Androida.
Szczegóły dotyczące tej biblioteki można znaleźć na stronie GitHub:
https://github.com/orfjackal/retrolambda#getting-started
Ponadto wtyczka Gradle dla RetroLambda utworzona przez innego programistę umożliwia implementację kompilacji opartych na Gradle w projektach Java lub Android. Jednak deweloper wspomina tylko o integracji tej wtyczki ze środowiskiem Android Studio. Szczegóły można znaleźć na stronie GitHub:
https://github.com/evant/gradle-retrolambda
Korzystanie z tych infrastruktur w środowisku programistycznym opartym na środowisku Eclipse nie jest możliwe bezpośrednio, ale jest wykonalne i zostanie przedstawione w tym przewodniku.
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 Gradlebędzie wykorzystywany do procesów kompilacji / czyszczenia, a także zapewniona zostanie procedura instalacji. Ponadto, zarówno JDK 8i JDK 7muszą współistnieć na maszynie rozwoju. Aby je zainstalować, należy wykonać kroki podane poniżej:
- Przejdź do strony podglądu wczesnego dostępu JDK 8 http://jdk8.java.net
- Pobierz JDK 8u20 i zainstaluj go. Instalacja środowiska JRE 8 nie jest konieczna i można go 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 folder domowy JDK 8 i folder JDK 8
bindo swojej %PATH%zmiennej
- Utwórz nową zmienną środowiskową
JAVA_HOMEo wartości ścieżki do folderu domowego JDK 8
- Utwórz
JAVA8_HOMEponownie nową zmienną środowiskową z wartością ścieżki do folderu domowego JDK 8
- Utwórz nową zmienną środowiskową
JAVA7_HOMEo wartości ścieżki do folderu domowego JDK 7
- Otwórz okno terminala, uruchom
java -versionpolecenie i sprawdź, czy Java 8 jest uruchomiona
- Uruchom
javac -versionkomendę w tym samym oknie i sprawdź, czy kompilator Java JDK 8 jest również uruchomiony
Teraz 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
- Pobierz ADT i rozpakuj jego zawartość do folderu, np
D:\adt
- Zdefiniuj nową zmienną środowiskową wywoływaną
ANDROID_HOMEz wartością ścieżki do folderu instalacyjnego ADT, npD:\adt\sdk
- Dodaj swoje
Andoid SDK Platform Toolsi Andoid SDK Toolsfoldery, np. D:\adt\sdk\toolsI D:\adt\sdk\platform-tools, do swojej %PATH%zmiennej
- Jeśli chcesz, utwórz skrót do Eclipse IDE. Znajduje się w folderze instalacyjnym narzędzia ADT, np
D:\adt\eclipse
- Uruchom Eclipse IDE i utwórz przestrzeń roboczą, np
D:\adt\workspace
- Kliknij
Android SDK Managerprzycisk znajdujący się na pasku narzędzi
- Wybierz
Android SDK Build tools Rev. 19.1i Android Support Librarytylko. 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 dotsedytora kodu Java. Może być zainstalowany Help -> Install New Softwarew Eclipse. Wpisz http://download.eclipse.org/eclipse/updates/4.3-P-builds/ w Work withpolu 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ępuje Eclipse Marketplace Client. Dlatego najpierw musisz zainstalować Eclipse Marketplace Clientza pomocą Install New Softwarenarzędzia w Eclipse. Wpisz http //: download.eclipse.org/mpc/kepler/ w Work withpolu i kontynuuj instalację. Po zainstalowaniu Eclipse Marketplace Client, można szukać Nodeclipse/Enide Gradlew Eclipse Marketplace Clienti zainstalować go.
Genymotion Virtual Device: Jest to świetny zamiennik domyślnego oprogramowania Android Virtual DeviceADT. AVD jest denerwująco kłopotliwy i ciągle zawiesza się bez powodu. Genymotion pozwala przygotować Android VD za pomocą CyanogenModobrazó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 PlayStorena tym urządzeniu wirtualnym, gappsobraz używanej wersji Androida musi zostać flashowany na urządzeniu. Właściwy gappsobraz 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:
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:
- Uruchom Eclipse IDE i utwórz nową aplikację na Androida, wybierając
File -> New -> Other -> Android -> Android Application Project
- Wypełnij poniższy formularz, jak pokazano poniżej:

gradle_build.cmd:

gradle_post_build.cmd:

gradle_clean.cmd:

- Odznacz opcję
Project -> Build Automaticallymenu
- Kliknij projekt prawym przyciskiem myszy, a następnie zaznacz
Properties -> Buildersi odznacz wszystkie domyślne programy budujące dostarczone przez ADT
- Kliknij
Newprzycisk w tym samym oknie, wybierz Programi kliknijOK
- Pojawi się okno konfiguracji nowego konstruktora. Wypełnij zakładki w następujący sposób:
Main Karta nowej konfiguracji Konstruktora

Refresh Karta nowej konfiguracji Konstruktora

Environment Karta nowej konfiguracji Konstruktora

Build Options Karta nowej konfiguracji Konstruktora

- Utwórz drugi konstruktor o nazwie,
Gradle_Post_Buildktóry używa gradle_post_build.cmdjako 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 do binfolderu.
- Utwórz trzeci konstruktor o nazwie,
Gradle_Cleanerktóry używa gradle_clean.cmdjako programu. Tylko Run the builderustawienie na ostatniej karcie musi być ustawione jako During 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 HelloLambdaprojektu

- Kliknij projekt prawym przyciskiem myszy i wybierz
Export
- Wybierz
Android -> Generate Gradle Build Filesi kliknijNext
- Wybierz projekt w następnym oknie i kliknij
Finish
- Przejdź do folderu głównego swojego projektu i usuń pliki
gradleworaz gradlew.bat. Usuń także gradlefolder
- Wróć do Eclipse i wybierz
Project -> Cleanopcję menu. Wypełnij formularz, który pokazuje się w następujący sposób:
Clean Project Okno

- Kliknij
OKi poczekaj, aż proces czyszczenia się zakończy
- Dodaj fragment kodu Java podany poniżej zaraz po wywołaniu
setContentViewfunkcji w swojej MainActivityklasie:

- Zmień początek
build.gradlepliku do sourceCompatibilitysekcji w następujący sposób:

- Kliknij projekt prawym przyciskiem myszy i wybierz
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.
- Kliknij
No w oknie powiadomienia
- Kliknij projekt prawym przyciskiem myszy i wybierz
Build project. Eclipse rozpocznie budowę projektu.
Proces kompilacji


Eclipse będzie teraz mógł rozpoznawać R.javai buildConfig.javapliki i nie będzie wyświetlał żadnych, red dotsktóre oznaczałyby błędy związane z plikami zasobów projektu.
- Utwórz nowy
Run Configurationdla docelowej platformy Android, klikając projekt prawym przyciskiem myszy, a następnie wybierając Run As -> Run Configurations. Na przykład ta aplikacja demonstracyjna wygląda tak, jak pokazano poniżej na Genymotion VD:
Aplikacja HelloLambda

W LogCatoknie 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