为什么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-jre7
和kotlin-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。