Работает ли Java 8 на Android API 24 и выше или вы можете использовать более низкий API?

В Android на основе этой страницы Функции языков Java 8 Android работает только в api 24 и выше или вы можете использовать в api ниже, чем API 24, и если вы можете использовать эти функции, какая самая маленькая версия API в Android поддерживает эти Особенности


person Community    schedule 11.03.2016    source источник
comment
По состоянию на 20 сентября 2016 г. эти функции поддерживаются в API 15 и выше.   -  person    schedule 20.09.2016
comment
До 20 сентября 2016 г. привязка данных Android и Lambda не могут работать вместе.   -  person    schedule 04.11.2016


Ответы (3)


Обновление. Начиная с Android Studio 2.4, компилятор Jack будет объявлен устаревшим, а поддержка Java 8 будет интегрирована в цепочку сборки по умолчанию. Некоторые функции Java 8 доступны на любом уровне API, некоторые по-прежнему ограничены API >= 24, см.:

https://developer.android.com/studio/preview/features/java8-support.html

Старый ответ:

функции Java 8 доступны начиная с уровня API 9, но только если вы используете Android Studio 2.1 (предварительная версия) и Android N Preview SDK

http://android-developers.blogspot.de/2016/03/first-preview-of-android-n-developer.html

Улучшенная поддержка языка Java 8. Мы рады представить возможности языка Java 8 для Android. Благодаря компилятору Jack для Android теперь вы можете использовать многие популярные языковые функции Java 8, включая лямбда-выражения и многое другое, в версиях Android, начиная с Gingerbread. Новые функции помогают сократить шаблонный код. Например, лямбда-выражения могут заменить анонимные внутренние классы при предоставлении прослушивателей событий. Некоторые функции языка Java 8, такие как стандартные и статические методы, потоки и функциональные интерфейсы, также теперь доступны на N и более поздних версиях. С Джеком мы надеемся более внимательно следить за языком Java, сохраняя при этом обратную совместимость.

person tknell    schedule 11.03.2016
comment
Функции, связанные с ProfessorMLM, доступны, начиная с уровня API 9, если используется Android Studio 2.1 (предварительная версия) и Android N Preview SDK. - person tknell; 11.03.2016
comment
Нет проблем, я обновил ответ, чтобы было понятно, какие функции доступны при каких обстоятельствах :) - person tknell; 11.03.2016
comment
Спасибо tknell, на самом деле я могу использовать java 8 с лямбдой в проектах с minSdkVersion API 15 - person ; 11.03.2016
comment
Почему я получаю сообщение об ошибке: не удается разрешить метод stream() даже после включения компилятора Jack? - person IgorGanapolsky; 20.03.2017
comment
Вы установили версию Java в compileOptions и compileSdkVersion и targetSdkVersion как минимум на 24, как описано здесь? developer.android.com/guide/platform/j8-jack.html - person tknell; 21.03.2017

Обновление
Набор инструментов Jack: устарело. Функции Java8 входят в стандартную цепочку инструментов, если вы используете плагин Android версии 2.4.0-alpha4 (или выше). Подробнее здесь.

Исходный ответ Функции Java 8 доступны в API N и новее, за исключением лямбда-выражений. Лямбда-выражения переносятся обратно (с использованием анонимных классов) обратно в Gingerbread.

Android N основывает свою реализацию лямбда-выражений на анонимных классах. Такой подход позволяет им быть обратно совместимыми и запускаемыми в более ранних версиях Android.

Чтобы проверить это, вам потребуется предварительная версия Android Studio 2.1, установленный JDK 8 и последние инструменты сборки.

Пример конфигурации сборки:

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc1"

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
person LordRaydenMK    schedule 11.03.2016

Обновление
Начиная с Android Studio 2.4, компилятор Jack будет объявлен устаревшим.
Android Studio 3.0 и более поздние версии поддерживают все функции языка Java 7 и подмножество Java. 8 языковых функций, которые зависят от версии платформы.

Вся информация в официальном документе: https://developer.android.com/studio/write/java8-support

Вы также можете настроить его непосредственно в соответствующем файле build.gradle:

Просто настройте:

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  // For Kotlin projects
  kotlinOptions {
    jvmTarget = "1.8"
  }
}

СТАРЫЙ (ответ)
Чтобы скомпилировать ваше приложение для платформы Android N, вы должны использовать JAVA 8.

Чтобы скомпилировать приложение для платформы Android N, необходимо использовать комплект разработчика Java 8 (JDK 8), а для использования некоторых инструментов с Android Studio 2.1 необходимо установить среду выполнения Java 8 (JRE 8).

person Gabriele Mariotti    schedule 11.03.2016
comment
Требование Java 8 JDK — это не то же самое, что поддержка функций языка Java 8. Текст в кавычках может просто означать, например, что один из инструментов сборки использует функцию Java 8. - person Jules; 07.10.2016