Почему плагин Kotlin добавляет ссылку kotlin-stdlib-jre7 (не kotlin-stdlib) для Android-проекта

Android Studio 2.3.3; Плагин Kotlin: 1.1.4; Kotlin Компилятор: Kotlin для JVM: 1.6.

Android Studio> Новый проект> Настроить действие Kotlin в проекте добавляет ссылку для kotlin-stdlib-jre7 на файл градиента. Я ожидал бы kotlin-stdlib, поскольку мы нацеливаем Kotlin JVM на 1.6.

Не нашли хорошего объяснения. Например, в этом ответе указывается, что

Артефакт kotlin-stdlib-jre7 не должен работать на Android, который в настоящее время поддерживает только платформу Java 6. При настройке на Android вы должны использовать kotlin-stdlib, который построен для JRE 6

Android поддерживает Java 7 уже несколько лет. Фактически, частичная поддержка Java 8 находится на пути, в начале с помощью инструментальной привязки Jack и в настоящее время посредством десурагирования в инструментальной цепочке по умолчанию .

Итак, kotlin-stdlib-jre7 отлично kotlin-stdlib-jre7 .

Как вы можете видеть в этом ответе , kotlin-stdlib получил две дополнительные библиотеки расширений kotlin-stdlib-jre7 и kotlin-stdlib-jre8 в 1.1. Эти библиотеки добавляют определенные функции для Java 7 и Java 8 и включают kotlin-stdlib в качестве транзитивной зависимости. См. Также примечания к выпуску Kotlin 1.1 :

Поддержка стандартной библиотеки Java 8

В настоящее время существуют отдельные версии стандартной библиотеки, поддерживающей новые API JDK, добавленные в Java 7 и 8. Если вам нужен доступ к новым API, используйте артефакты kotlin-stdlib-jre7 и kotlin-stdlib-jre8 maven вместо стандартного kotlin- STDLIB. Эти артефакты являются крошечными расширениями поверх kotlin-stdlib, и они приносят это в ваш проект как транзитивную зависимость.

Плагин Kotlin в текущих версиях Android Studio добавляет kotlin-stdlib-jre7 в качестве зависимости при настройке Kotlin в проекте, так как Android Studio и инструменты сборки поддерживают Java 7 в обратном режиме, так как Android Studio 0.3.2, выпущенный в октябре 2013 года . См. Также Поддерживает ли Android поддержку JDK 6 или 7 . В частности, в примечаниях к выпуску указано:

Главная особенность этого выпуска – поддержка Android KitKat:

Поддержка языковых функций, таких как оператор бриллианта, многопользовательский режим, try-with-resources, строки в переключателях и т. Д. При создании нового проекта вы можете указать уровень исходного языка:

А также:

Обратите внимание, что вы можете использовать все эти языковые функции не только с Android KitKat, но и со старыми версиями Android! Есть одно исключение: try-with-resources, для чего потребуется minSdkVersion 19.