Ви можете дійсно використовувати gradle-retrolamba
залежність побудови gradle, щоб використовувати Java 8 для розробки Android.
Нижче наведено повне керівництво, яке я нещодавно дотримувався для запуску лямбда-виразів для розробки Android. Оригінальне джерело цього посібника згадується в кінці.
У цьому посібнику буде продемонстровано спосіб залучення деяких функцій Java 8 до Інструментів Android для розробки, зокрема, спрямованих на
IDE Eclipse. Однак кроки, які будуть описані в цьому посібнику, також можуть бути адаптовані до нового середовища розробки повстання Google, Android Studio. Він заснований на спільному виданні популярного IntelliJ Idea IDE від JetBrains, і останнім часом оновлено до своєї «бета» версії Google на початку липня 2014 року, трохи до того, як цей посібник був написаний. Eclipse залишатиметься видатним середовищем розробки хоча б на деякий час, а враховуючи той факт, що більшість проектів Android розробляються за допомогою Eclipse, метод для введення нових функцій Java 8, таких як лямбда-вирази, в ADT здається досить корисним для розробників.
Android Development заснована на користувацькій реалізації Java під назвою Apache Harmony Project, яка була припинена ще в 2011 році. Найчастіше синтаксис Java в Android Development - це 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/isissue/detail?id=72591
Кроки в цьому посібнику будуть описані для Windows 8.1, 64-розрядної машини для розробки, але їх можна легко адаптувати до інших платформ. Нова система збірки 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 та папку JDK 8
bin
до %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%
змінної
- Створіть ярлик для ID Eclipse, якщо вам подобається. Він знаходиться під папкою установки 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
на цьому віртуальному пристрої, agapps
повинно прошиватися зображення для версії Android, яку він використовує. Належне 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 почне будувати проект.
Процес побудови
Eclipse тепер зможе розпізнавати R.java
та buildConfig.java
файли, і він не відображатиме жодних, red dots
що позначають помилки, пов’язані з файлами ресурсів проекту.
- Створіть нову
Run Configuration
для своєї цільової платформи Android, клацнувши правою кнопкою миші на проект, а потім виберіть Run As -> Run Configurations
. Наприклад, цей демонстраційний додаток виглядає так, як показано нижче на VD Genymotion:
Приклад HelloLambda
Ви можете помітити у LogCat
вікні, що фрагмент коду з простим лямбда-виразом працює належним чином
Джерело: Використання Java 8 Lambda Expressions в інструментах для розробників Android