为什么Kotlin插件为Android项目添加了kotlin-stdlib-jre7(不是kotlin-stdlib)参考

Android Studio 2.3.3; Kotlin插件:1.1.4; Kotlin编译器:Kotlin到JVM:1.6。

Android Studio>新建项目>在Project action中配置Kotlin将kotlin-stdlib-jre7的参考添加到gradle文件。 我期望kotlin-stdlib,因为我们Kotlin的目标JVM是1.6。

没有找到好的解释。 例如, 这个答案说明

kotlin-stdlib-jre7工件不应该在Android上工作,它目前仅支持Java 6平台。 在定位Android时,应该使用为JRE 6构建的kotlin-stdlib

Android已经有几年支持Java 7了。 实际上,对Java 8的部分支持正在进行中,最初是通过Jack工具链的方式进行的 ,目前通过在缺省工具链中进行解除的方式 。

所以, kotlin-stdlib-jre7是非常好的。

正如你在这个答案中所看到的, kotlin-stdlib在1.1中有另外两个扩展库kotlin-stdlib-jre7kotlin-stdlib-jre8 。 该库为Java 7和Java 8添加了特定功能,并将kotlin-stdlib作为传递依赖项。 另请参阅Kotlin 1.1发行说明 :

Java 8标准库支持

现在,支持在Java 7和8中添加的新的JDK API的标准库的单独版本。如果您需要访问新的API,请使用kotlin-stdlib-jre7和kotlin-stdlib-jre8 maven工件而不是标准的kotlin- STDLIB。 这些工件是kotlin-stdlib上的小扩展,它们将它作为传递依赖项传递给您的项目。

Android Studio的当前版本中的Kotlin插件会在项目中配置Kotlin时将kotlin-stdlib-jre7添加为依赖项,因为从2013年10月发布Android Studio 0.3.2以来,Android Studio和构建工具以向后兼容的方式支持Java 7。 另请参阅Android是否支持JDK 6或7 。 具体而言,发行说明指出:

此版本的主要功能是支持Android KitKat:

支持钻石操作符,多重捕获,试用资源,开关中的字符串等语言功能。创建新项目时,可以指定源语言级别:

和:

请注意,您不仅可以使用Android KitKat,还可以使用所有这些语言功能,但也可以使用旧版本的Android! 有一个例外:尝试与资源,这将需要minSdkVersion 19。