Вы действительно можете использовать gradle-retrolamba
зависимость сборки gradle, чтобы использовать Java 8 для разработки Android.
Ниже приведено полное руководство, которому я недавно следовал при запуске лямбда-выражений для разработки под Android. Первоначальный источник этого руководства упоминается в конце.
В этом руководстве будет продемонстрирован метод добавления некоторых функций Java 8 в инструменты разработки Android, специально предназначенные для
Eclipse IDE., Однако шаги, которые будут описаны в этом руководстве, также могут быть адаптированы к новой среде разработки восстания Google, Android Studio. Он основан на общедоступной версии популярной среды разработки IntelliJ Idea от JetBrains и недавно был обновлен до своей «бета-версии» компанией Google в начале июля 2014 года, незадолго до написания этого руководства. Eclipse останется выдающейся средой разработки, по крайней мере, на некоторое время, и с учетом того факта, что большинство проектов Android были разработаны с использованием Eclipse, метод добавления новых функций Java 8, таких как лямбда-выражения, в ADT, кажется весьма полезным для разработчиков.
Разработка Android основана на пользовательской реализации Java под названием Apache Harmony Project, которая была прекращена в 2011 году. Наиболее часто используемый синтаксис Java в разработке Android - это Java 6 (v1.6) и Java 7 (v1.7), которые также частично поддерживаются издание KitKat (Android 4.4. +). Поэтому функции Java 8, такие как лямбда-выражения, нельзя использовать непосредственно в разработке приложений для Android без применения некоторых настроек в инструментах разработки. К счастью, эти конструкции в основном представляют собой некоторые улучшения «синтаксического сахара», которые дают разработчикам недостатки таких вещей, как «анонимные классы», и они могут быть переведены в классы Java 6 или Java 7.
Недавний подход для перевода исходного кода Java 8 в более низкие версии Java называется RetroLambda . Эта библиотека заставляет разработчиков запускать код Java 8 с лямбда-выражениями на Java 7 или даже ниже. К сожалению, функции Java 8, отличные от лямбда-выражений, пока не поддерживаются RetroLambda, но концепция лямбда-выражений является самым большим скачком на платформе Java 8, и в любом случае это отличный инструмент для разработчиков Android.
Подробности об этой библиотеке можно найти на странице GitHub:
https://github.com/orfjackal/retrolambda#getting-started
Кроме того, плагин Gradle для RetroLambda, созданный другим разработчиком, позволяет реализовывать сборки на основе Gradle в проектах Java или Android. Тем не менее, разработчик упоминает только об интеграции этого плагина в среду Android Studio. Подробности можно найти на его странице GitHub:
https://github.com/evant/gradle-retrolambda
К этим инфраструктурам в среде разработки на основе Eclipse нельзя подходить напрямую, но это выполнимо и будет продемонстрировано в этом руководстве.
подготовка
В этом руководстве предполагается, что читатель имеет базовые знания об Android-разработке и основан на ADT версии 22.6.2, поскольку в последней версии ADT 23.0.2, по-видимому, имеются проблемы, такие как создание папки макета. Подробности об этой проблеме можно найти по следующей ссылке:
http://code.google.com/p/android/issues/detail?id=72591
Шаги в этом руководстве будут даны для 64-битной машины для разработки под Windows 8.1, но их легко адаптировать к другим платформам. Новая система сборки Gradle
будет использоваться для процессов сборки / очистки, а также будет предоставлена процедура ее установки. Также оба JDK 8
и JDK 7
должны сосуществовать на машине разработки. Для их установки необходимо выполнить следующие шаги:
- Перейти на страницу предварительного просмотра JDK 8 http://jdk8.java.net
- Скачайте JDK 8u20 и установите его. Установка JRE 8 не требуется, и ее можно пропустить
- Перейдите на страницу последнего стабильного выпуска JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- Скачайте JDK 7u65 и установите его. Установка JRE 7 снова не требуется, и ее можно пропустить
- Добавьте домашнюю папку JDK 8 и
bin
папку JDK 8 в свою %PATH%
переменную
- Создайте новую переменную среды
JAVA_HOME
со значением пути к домашней папке JDK 8
JAVA8_HOME
Снова создайте новую переменную среды со значением пути к домашней папке JDK 8
- Создайте новую переменную среды
JAVA7_HOME
со значением пути к домашней папке JDK 7
- Откройте окно терминала и выполните
java -version
команду и убедитесь, что Java 8 запущена и работает
- Запустите
javac -version
команду в том же окне и убедитесь, что JDK 8 Java-компилятор также запущен и работает
Теперь ADT-22.6.2 необходимо скачать по следующей ссылке:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- Загрузите ADT и разархивируйте его содержимое в папку, например
D:\adt
- Определите новую переменную среды, вызываемую
ANDROID_HOME
со значением пути к папке установки ADT, напримерD:\adt\sdk
- Добавьте ваши
Andoid SDK Platform Tools
и Andoid SDK Tools
папки, например, D:\adt\sdk\tools
и D:\adt\sdk\platform-tools
, к вашей %PATH%
переменной
- Создайте ярлык для Eclipse IDE, если хотите. Он находится в папке установки ADT, например,
D:\adt\eclipse
- Запустите Eclipse IDE и создайте рабочую область, например
D:\adt\workspace
- Нажмите на
Android SDK Manager
кнопку, которая находится на панели инструментов
- Выберите
Android SDK Build tools Rev. 19.1
и Android Support Library
только. Отмените выбор всего остального и установите эти два пакета.
Если все пойдет хорошо, ADT будет запущен.
Также рекомендуется установка следующих инструментов:
Поддержка Eclipse Kepler Java 8: она позволяет Eclipse распознавать новые расширения синтаксиса Java 8 и избавляет от назойливости red dots
в редакторе кода Java. Это может быть установлено через Help -> Install New Software
Eclipse. Введите http://download.eclipse.org/eclipse/updates/4.3-P-builds/ в Work with
поле и продолжайте его установку.
Nodeclipse / Enide Gradle: в основном используется для выделения ключевых слов на языке Groovy. Groovy используется как DSL для скриптов сборки Gradle. Этот плагин можно установить через Eclipse Marketplace
. Однако Eclipse в ADT-22.6.2 не входит в комплект Eclipse Marketplace Client
. Поэтому сначала вам нужно установить Eclipse Marketplace Client
с помощью Install New Software
инструмента в Eclipse. Введите http //: download.eclipse.org/mpc/kepler/ в Work with
поле и продолжайте его установку. После установки Eclipse Marketplace Client
, вы можете искать Nodeclipse/Enide Gradle
в Eclipse Marketplace Client
и установить его.
Виртуальное устройство Genymotion: отличная замена стандартному, Android Virtual Device
который поставляется вместе с ADT. AVD раздражающе громоздок и продолжает падать без всякой причины. Genymotion заставляет вас готовить Android VD, используя CyanogenMod
изображения, которые выполняются Oracle VirtualBox . Его однопользовательская лицензия бесплатна, и ее можно скачать с http://www.genymotion.com . Требуется только логин, и он также может быть интегрирован в Eclipse. Подробности можно найти под:
https://cloud.genymotion.com/page/doc/#collapse8
Ниже приведен скриншот виртуального устройства CyanogenMod на базе Android 4.3,
Его можно рассматривать как полноценное устройство Android, работающее на персональном компьютере на базе x86 или x64. Чтобы использовать сервисы Google, как Google PlayStore
на этом виртуальном устройстве, gapps
изображение устройства, которое он использует, должно быть перенесено на устройство. Подходящее gapps
изображение для устройства можно загрузить с веб-сайта CyanogenMod:
http://wiki.cyanogenmod.org/w/Google_Apps
Установка Gradle является необязательной, поскольку она также предоставляется самим Android SDK, но настоятельно рекомендуется ее отдельная установка. Установка может быть выполнена, выполнив следующие действия:
Демо-приложение
Будет создано простое приложение для демонстрации использования инструментов, которые были описаны в предыдущем разделе. Вы можете просто следовать приведенным ниже инструкциям, чтобы получить представление об использовании лямбда-выражений в Инструментах разработчика Android:
- Запустите Eclipse IDE и создайте новое приложение для Android, выбрав
File -> New -> Other -> Android -> Android Application Project
- Заполните форму, как показано ниже:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- Отменить выбор
Project -> Build Automatically
пункта меню
- Щелкните правой кнопкой мыши по проекту и выберите
Properties -> Builders
и отмените выбор всех сборщиков по умолчанию, предоставляемых ADT.
- Нажмите
New
кнопку в том же окне, выберите Program
и нажмитеOK
- Откроется окно конфигурации нового сборщика. Заполните его вкладки следующим образом:
Main
Вкладка новой конфигурации Builder
Refresh
Вкладка новой конфигурации Builder
Environment
Вкладка новой конфигурации Builder
Build Options
Вкладка новой конфигурации Builder
- Создайте второй сборщик с именем,
Gradle_Post_Build
который использует в gradle_post_build.cmd
качестве своей программы. Все остальные настройки этого компоновщика должны точно совпадать с ранее созданным компоновщиком. Этот сборщик будет отвечать за копирование артефактов, созданных процессом сборки, в bin
папку.
- Создайте третий сборщик с именем,
Gradle_Cleaner
который использует в gradle_clean.cmd
качестве своей программы. Только Run the builder
настройка на последней вкладке должна быть установлена как During a Clean
. Все остальные настройки этого компоновщика должны быть точно такими же, как и у первого компоновщика. Этот строитель будет отвечать за очистку артефактов, созданных в процессе сборки, как следует из названия.
Новые строители HelloLambda
проекта
- Щелкните правой кнопкой мыши по проекту и выберите
Export
- Выберите
Android -> Generate Gradle Build Files
и нажмитеNext
- Выберите проект в следующем окне и нажмите
Finish
- Перейдите в корневую папку вашего проекта и удалите файлы
gradlew
и gradlew.bat
. Также удалите gradle
папку
- Вернитесь к Eclipse и выберите пункт
Project -> Clean
меню. Заполните форму, которая отображается следующим образом:
Clean Project
Окно
- Нажмите
OK
и дождитесь завершения процесса очистки
- Добавьте приведенный ниже фрагмент кода Java сразу после вызова
setContentView
функции в вашем MainActivity
классе:
- Измените начало
build.gradle
файла до sourceCompatibility
раздела следующим образом:
- Щелкните правой кнопкой мыши по проекту, выберите
Properties -> Java Compiler
опцию и установите все уровни соответствия Java 8. Это позволит Eclipse распознавать новые конструкции Java 8, такие как лямбда-выражения.
- Нажмите
No
в окне уведомлений
- Щелкните правой кнопкой мыши по проекту и выберите
Build project
. Затмение начнет строить проект.
Процесс сборки
Eclipse теперь сможет распознавать R.java
и buildConfig.java
файлы, и не будет отображать какие-либо red dots
ошибки, связанные с файлами ресурсов проекта.
- Создайте новую
Run Configuration
для целевой платформы Android, щелкнув правой кнопкой мыши по проекту и выбрав Run As -> Run Configurations
. Например, это демонстрационное приложение выглядит как показано ниже на Genymotion VD:
Приложение HelloLambda
В LogCat
окне вы можете заметить, что фрагмент кода с простым лямбда-выражением работает правильно
Источник: Использование лямбда-выражений Java 8 в инструментах разработчика Android