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

时间:2017-08-30 07:58:22

标签: android android-studio kotlin

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

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

没有找到好的解释。 例如。 this answer表示

  

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

1 个答案:

答案 0 :(得分:6)

Android已经支持Java 7多年了。实际上,Java 8的部分支持正在开始,最初是Jack toolchain,目前是desugaring in the default toolchain

所以,kotlin-stdlib-jre7完全没问题。

正如您在this answer中看到的那样,kotlin-stdlib在1.1中获得了两个额外的扩展库kotlin-stdlib-jre7kotlin-stdlib-jre8。此库为Java 7和Java 8添加了特定功能,并包含kotlin-stdlib作为传递依赖项。另请参阅Kotlin 1.1 release notes

  

Java 8标准库支持

     

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

当前版本的Android Studio中的Kotlin插件在项目中配置Kotlin时添加kotlin-stdlib-jre7作为依赖项,因为Android Studio和构建工具从Android Studio 0.3.2, released in October 2013开始以向后兼容的方式支持Java 7。另见Does Android support JDK 6 or 7。具体来说,发行说明指出:

  

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

     

支持钻石操作符,多次捕获,资源尝试,交换机中的字符串等语言功能。   创建新项目时,您可以指定源语言级别:

  

请注意,您可以使用所有这些语言功能,不仅适用于Android KitKat,还适用于旧版本的Android!有一个例外:try-with-resources,这将需要minSdkVersion 19。