page.title=Возможности языка Java 8 page.keywords="android N", "Java 8", "Jack" @jd:body
В Android N появилась поддержка возможностей языка Java 8, которые можно использовать при разработке приложений для Android N. На данной странице приведены описания новых возможностей языка, поддерживаемых в Android N Preview, объяснено как настроить проект для их использования, а также указаны известные проблемы, с которыми можно столкнуться.
Для использования этих функций необходимо загрузить и установить Android Studio 2.1 (предварительная версия) и Android N Preview SDK, который включает набор инструментов Jack и обновленный подключаемый модуль Android для Gradle. Если вы еще не установили Android N Preview SDK, см. Настройка среды разработки для Android N.
Примечание. Использование новых возможностей языка Java 8 не является обязательным требованием при разработке приложений для платформы Android N. Если вы не хотите писать код с использованием возможностей языка Java 8, можно указать Java 7 в качестве значения совместимости для проекта, однако все-равно необходимо будет выполнить компиляцию с JDK 8 для осуществления сборки на платформе Android N.
В настоящее время Android поддерживает не все возможности языка Java 8. Однако при разработке приложений для Android N Preview доступны следующие функции.
Кроме того, доступны следующие API-интерфейсы для реализации возможностей языка Java 8.
Примечание. В Android N реализация лямбда-выражений выполнена с помощью анонимных классов. Данный подход обеспечивает их обратную совместимость и возможность выполнения в предыдущих версиях Android. При тестировании лямбда-выражений в предыдущих версиях перейдите в файл {@code build.gradle} и установите для параметров {@code compileSdkVersion} и {@code targetSdkVersion} значения 23 или ниже.
Для использования новых возможностей языка Java 8 необходимо также использовать новый набор инструментов Jack. С его помощью Android компилирует языковой источник Java в считываемый Android байткод Dalvik Executable (dex). В Jack предусмотрен собственный формат библиотеки {@code .jack}, большинство функциональных возможностей набора инструментов предоставляется в рамках одного инструмента: перекомпоновка, сжатие, обфускация и использование нескольких файлов DEX.
Ниже представлено сравнение двух наборов инструментов, используемых для сборки файлов DEX в Android.
Чтобы использовать возможности языка Java 8 и набор инструментов Jack для проекта, добавьте в файл модуля {@code build.gradle} следующий код:
android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
Функция Instant Run, появившаяся в Android Studio 2.0 (Beta), не работает с набором инструментов Jack и будет отключена при его использовании.
Поскольку набор инструментов Jack не создает промежуточные файлы классов при компиляции приложения, инструменты, которые используют такие файлы, пока с Jack не работают. Примеры таких инструментов приведены ниже.
Если вы обнаружите другие проблемы во время использования набора инструментов Jack, сообщите о них.