При поиске в Интернете неясно, поддерживается ли Java 8 для разработки под Android или нет.
Прежде чем я скачаю / настрою Java 8, могу ли кто-нибудь указать мне на «официальную» документацию, в которой говорится, что Java 8 поддерживается или не поддерживается для разработки под Android.
Ответы:
Ява 8
Android поддерживает все функции языка Java 7 и подмножество функций языка Java 8, которые зависят от версии платформы.
Чтобы проверить, какие функции Java 8 поддерживаются
Используйте возможности языка Java 8
Будущее поддержки языка Java 8 на Android
Eclipse Users:
Для старых разработчиков, предпочитающих Eclipse, Google перестает поддерживать инструменты разработчика Android Eclipse.
если вы установили Java 8 JDK, то попробуйте, если возникнут какие-либо проблемы, попробуйте установить компилятор как 1.6 в Eclipse из меню окна → Настройки → Java → Компилятор . Java 7 тоже будет работать:
установите несколько JDK и попробуйте.
источник
ОБНОВЛЕНИЕ 2017/11/04 - Android Studio 3.0 теперь имеет встроенную поддержку Java 8.
gradle-retrolambda
Теперь больше не требуется. См. Https://developer.android.com/studio/write/java8-support.html.Приведенная выше ссылка также содержит инструкции по миграции, если вы используете
gradle-retrolambda
. Оригинальный ответ ниже:Android не поддерживает Java 8. Он поддерживает только Java 7 (если у вас есть kitkat), и при этом у него нет invokedynamic, только новый синтаксический сахар.
Если вы хотите использовать лямбды, одну из основных функций Java 8 в Android, вы можете использовать gradle-retrolamba . Это зависимая сборка, которая объединяет retrolambda, инструмент, который преобразует байт-код Java 8 обратно в Java 6/7. По сути, если вы установите компилятор в Android Studio для компиляции байт-кода Java 8, тем самым разрешив лямбда-выражения, он преобразует его обратно в байт-код Java 6/7, который затем, в свою очередь, преобразуется в байт-код dalvik. Это хак, если вы хотите попробовать некоторые функции JDK 8 в Android вместо официальной поддержки.
источник
try-with-resources
работает только с Киткат.Вы действительно можете использовать
gradle-retrolamba
зависимость сборки gradle, чтобы использовать Java 8 для разработки Android.Ниже приведено полное руководство, которому я недавно следовал при запуске лямбда-выражений для разработки под Android. Первоначальный источник этого руководства упоминается в конце.
подготовка
В этом руководстве предполагается, что читатель имеет базовые знания об 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
должны сосуществовать на машине разработки. Для их установки необходимо выполнить следующие шаги:bin
папку JDK 8 в свою%PATH%
переменнуюJAVA_HOME
со значением пути к домашней папке JDK 8JAVA8_HOME
Снова создайте новую переменную среды со значением пути к домашней папке JDK 8JAVA7_HOME
со значением пути к домашней папке JDK 7java -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
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%
переменнойD:\adt\eclipse
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, но настоятельно рекомендуется ее отдельная установка. Установка может быть выполнена, выполнив следующие действия:
Перейти на веб-сайт Gradle: http://www.gradle.org/
щелчок
Downloads
Previous Releases
выбрать версию 1.10 и скачать либо gradle-1.10-all.zip или gradle-1.10-bin.zipD:\adt\gradle
GRADLE_HOME
со значением пути к папке установки Gradle, напримерD:\adt\gradle
D:\adt\gradle\bin
, в вашу%PATH%
переменнуюgradle -v
команду и убедитесь, что оно работает и работает. Если вы успешно подошли к этому моменту, это означает, что вы готовы создать свое первое приложение для Android с использованием функций Java 8.Демо-приложение
Будет создано простое приложение для демонстрации использования инструментов, которые были описаны в предыдущем разделе. Вы можете просто следовать приведенным ниже инструкциям, чтобы получить представление об использовании лямбда-выражений в Инструментах разработчика Android:
File -> New -> Other -> Android -> Android Application Project
Next
кнопку на следующих формах и нажмитеFinish
кнопку на последней. Подождите, пока ADT не завершит загрузку проектаNew -> Folder
и назовите егоbuilders
gen (Generated Java Files)
папку и удалите ее. Gradle скоро сгенерирует те же файлы для нас, и мы добавим их вs build path. The
папку проекта gen, созданную стандартным компоновщиком Ant по умолчанию, и артефакты в этой папке будут устаревшими.Создайте в
builders
папке следующие командные файлы :Заполните эти командные файлы следующим образом:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
Project -> Build Automatically
пункта менюProperties -> Builders
и отмените выбор всех сборщиков по умолчанию, предоставляемых ADT.New
кнопку в том же окне, выберитеProgram
и нажмитеOK
Main
Вкладка новой конфигурации BuilderRefresh
Вкладка новой конфигурации BuilderEnvironment
Вкладка новой конфигурации BuilderBuild Options
Вкладка новой конфигурации BuilderGradle_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
папкуProject -> Clean
меню. Заполните форму, которая отображается следующим образом:Clean Project
ОкноOK
и дождитесь завершения процесса очисткиsetContentView
функции в вашемMainActivity
классе:build.gradle
файла доsourceCompatibility
раздела следующим образом:Properties -> Java Compiler
опцию и установите все уровни соответствия Java 8. Это позволит Eclipse распознавать новые конструкции Java 8, такие как лямбда-выражения.No
в окне уведомленийBuild project
. Затмение начнет строить проект.Процесс сборки
Щелкните правой кнопкой мыши по проекту и перейдите к
Properties -> Java Build Path
. Добавьте следующие папки в путь сборки (также показано на рисунке ниже):build\source\buildConfig\debug
build\source\r\debug
Eclipse теперь сможет распознавать
R.java
иbuildConfig.java
файлы, и не будет отображать какие-либоred dots
ошибки, связанные с файлами ресурсов проекта.Run Configuration
для целевой платформы Android, щелкнув правой кнопкой мыши по проекту и выбравRun As -> Run Configurations
. Например, это демонстрационное приложение выглядит как показано ниже на Genymotion VD:Приложение HelloLambda
В
LogCat
окне вы можете заметить, что фрагмент кода с простым лямбда-выражением работает правильноИсточник: Использование лямбда-выражений Java 8 в инструментах разработчика Android
источник
Перейдите по этой ссылке для новых обновлений. Используйте возможности языка Java 8
Старый ответ
Начиная с версии предварительного просмотра Android N Android поддерживает ограниченные возможности Java 8, см. Языковые функции Java 8
Поддерживаемые языковые функции и API Java 8
Стандартные и статические методы интерфейса
Лямбда-выражения (также доступны на уровне API 23 и ниже)
Повторяемые аннотации
Ссылки на метод (также доступны на уровне API 23 и ниже)
Есть некоторые дополнительные функции Java 8, которые поддерживает Android, вы можете увидеть полную информацию из Java 8 Language Features
Обновить
Обновление 2
Теперь стабильная версия Android Studio 3.0 поддерживает библиотеки Java 8 и функции языка Java 8 (без компилятора Jack).
источник
minSdkVersion
?Да, Android теперь поддерживает Java 8 (24.1.17)
Теперь это возможно
Но вам нужно будет запустить ваше устройство на Java 1.8 и включить «jackOptions» для его запуска. Джек - это имя нового компилятора Android, работающего под управлением Java 8.
https://developer.android.com/guide/platform/j8-jack.html
добавить эти строки в build_gradle
Похоже, что Java 8 работает под управлением Java в Android Studio 2.0, но он все еще не принимает синтаксис java 8 после того, как я проверил, и вы не можете сейчас выбрать компилятор из Android Studio. Однако вы можете использовать плагин Scala, если вам нужен механизм функционального программирования в вашем Android-клиенте.
источник
Android использует Java, который разветвляется от Java 6.
На Android SDK версии 19, вы можете использовать Java 7 функций , делая это . Нет полной поддержки Java 8 (пока).
источник
Родная Java 8 прибывает на Android! В заключение!
Чтобы начать использовать поддерживаемые функции языка Java 8, обновите плагин Android до версии 3.0.0 (или выше).
Начиная с Android Studio 3.0, функции языка Java 8 теперь поддерживаются Android:
Также с минимального уровня API 24 доступны следующие API Java 8:
Добавьте эти строки в build.gradle вашего прикладного модуля, чтобы проинформировать проект об уровне языка:
Отключите поддержку функций языка Java 8, добавив в файл gradle.properties следующее :
Вы сделали! Теперь вы можете использовать нативный java8!
источник
Android ОФИЦИАЛЬНО поддерживает Java 8 начиная с Android N.
Объявления о возможностях здесь , объявление о языке Java 8:
источник
Мы можем использовать Java 8, используя:
В build.gradle (Project: myProject) добавьте следующее
В build.gradle (Модуль: myModule) добавьте следующее
источник
ОБНОВЛЕНИЕ 2020/01/17
Android Studio 4.0 включает в себя поддержку использования ряда API-интерфейсов языка Java 8 с использованием метода, называемого desugaring, без минимального уровня API для вашего приложения:
https://developer.android.com/studio/preview/features#j8-desugar.
ОРИГИНАЛЬНАЯ ПОЧТА ОТ 2017
В Android Studio 3.0 появилась встроенная поддержка некоторых функций языка Java 8, а именно:
Также начиная с уровня API 24 доступны следующие 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()
Кроме того,
try-with-resources
поддержка была распространена на все уровни Android API.В будущем будет добавлено больше возможностей Java 8.
Для получения более подробной информации посетите:
https://developer.android.com/studio/write/java8-support.html
источник
2.4.0-alpha6
). Пожалуйста, проверьте блок цитаты в ответе.Простой способ
Вы можете включить поддержку java 1.8 для проекта Android.
Открытая структура проекта
Либо нажав Ctrl + Shift + Alt + S
Или
File > Project Structure
Обновите Совместимость источника и Целевую совместимость до 1.8 в диалоговом окне «Структура проекта», как показано (выберите «Файл»> «Структура проекта»).
Или вы можете использовать Gradle
Синхронизировать проект. И это все!
Примечание: поддержка Java 1.8 может быть включена для Android Studio 3.0.0 или выше. Смотрите документацию для дальнейшего чтения.
источник
Когда я задавал этот вопрос почти 2 года назад, на самом деле ответ был «официально» - нет, но, как указывает ответ ekcr1, вы можете заставить работать одну из самых ожидаемых функций (лямбда-выражения), если вы используете retrolamba. В то время я все еще использовал Eclipse, так как Android Studio находился в режиме «предварительного просмотра», поэтому я никогда не шел по этому пути.
Сегодня я думаю, что «официального» ответа все еще нет, и хотя ретроламба все еще кажется хорошим путем, есть еще один вариант для тех, кто хочет пойти по несколько «неофициальному» маршруту, а именно Котлин.
Сегодня Котлин достиг 1.0.0. Для тех, кто не знаком с Kotlin, более подробную информацию можно найти на их веб-сайте здесь:
https://kotlinlang.org
или посмотрите это видео с выступлением Джейка Уортона
https://www.youtube.com/watch?v=A2LukgT2mKc
источник
Последние новости:
Google объявляет, что с Android N и Android Studio 2.1+ платформа будет поддерживать Java 8. Также была выпущена стабильная версия студии 2.1.
Наконец мы можем использовать лямбда-выражения. Больше нет фильтра по списку для цикла. Horeeey.
источник
Добавьте этот конфиг build.gradle и синхронизируйте gradle:
источник
Google только что объявил, что Java 8 будет изначально поддерживаться Android и что набор инструментов Jack будет устаревшим:
Дополнительная информация здесь: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
источник
Да. Мы скоро будем использовать Java 8!
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
источник
добавить эту строку в модуль lvl build gradel
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
источник
Я написал аналогичный ответ на похожий вопрос о переполнении стека, но вот часть этого ответа.
Android Studio 2.1:
Новая версия Android Studio (2.1) имеет поддержку функций Java 8. Вот выдержка из поста на блоге разработчиков Android :
До Android Studio 2.1:
Android пока не поддерживает Java 1.8 (он поддерживает только до 1.7), поэтому вы не можете использовать функции Java 8, такие как лямбды.
Этот ответ дает более подробную информацию о совместимости Android Studio ; Здесь утверждается:
Если вы хотите узнать больше об использовании
gradle-retrolambda
, этот ответ дает много подробностей о том, как это сделать .источник
"SDK Location"
(это на Mac FWIW) просто говорит,"/Users/me/Library/Android/sdk"
я использую Java8 - как использовать Java8 ?? Спасибо!Я решил опубликовать обновленный ответ для тех, кто ищет что-то более актуальное.
В настоящее время Android и Android Studio поддерживают подмножество функций Java 8. Согласно документации Android, размещенной на их сайте , Google говорит:
Кроме того, доступны следующие API языка Java 8:
источник
Я задал этот вопрос более 3 лет назад, и, очевидно, ответы изменились за эти годы. Как многие из выше уже ответили, на некоторое время назад ответ стал Да . Я никогда не обновлял принятый ответ, потому что это был правильный ответ в то время. (Я не уверен, что такое политика переполнения стека)
Я просто хотел добавить еще один ответ для тех, кто все еще ищет эту тему. По состоянию на 17.05.2017 Google также объявил, что Kotlin также является официальным языком для разработки под Android.
Я не нашел официального пресс-релиза, но я смотрел некоторые из видео Google I / O, где он был анонсирован. Вот ссылка на блог пост командой Котлин на объявления.
источник
Добавление следующего исправило проблему для меня (Android Studio 2.3.2):
build.gradle (проект)
build.gradle (Модуль: приложение)
источник
Подмножество Java 8 теперь поддерживается в Android Studio. Просто сделайте настройки Source и Target Compatibility из окна ниже:
Файл -> Структура проекта
Более подробная информация приведена в ссылке ниже.
https://developer.android.com/studio/write/java8-support.html
источник
ОБНОВЛЕНИЕ 2019/10/28
Android Studio 4.0 решает эту проблему .
Компилятор D8 исправляет бэкпорт нативных API-интерфейсов Java 8 в ваш APK во время компиляции, и ваше приложение будет использовать этот код вместо нативных API-интерфейсов во время выполнения. Процесс называется десугаринг .
источник
Все вышеперечисленные решения не работают в 2019 году с последней версией Android Studio 3.4+ .
Я нашел идеальное и современное решение для переноса или обновления вашего Android Project на Java 8 .
Решение: Нажмите Файл -> Структура проекта -> Модули -> вкладка Свойства .
Измените Совместимость источника и Целевую Совместимость до 1.8 (Java 8)
источник
Да, вы можете использовать функции Java 8 Language в Android Studio, но версия должна быть 3.0 или выше. Прочтите эту статью о том, как использовать функции Java 8 в Android-студии.
https://bijay-budhathoki.blogspot.com/2020/01/use-java-8-language-features-in-android-studio.html
источник
Самый простой способ добавить поддержку Java 8
Просто добавьте его в свой файл build.gradle.
источник