是否可以在不依赖kotlin-stdlib的情况下在JVM或Android上使用kotlin?

时间:2019-01-20 01:09:35

标签: android kotlin

我有一个以jar文件分发的android库;当前,它具有零依赖关系(除了Java本身内置的东西之外)。我喜欢将其移植到Kotlin的想法,但是在不强制依赖kotlin-stdlib(或kotlin-stdlib-jre7等)的情况下,我一直想不出办法

我对此有些警惕,因为kotlin-stdlib经常获得更新(有时每月多次),并且我不想引起将来的兼容性问题。

很明显,如果我使用任何kotlin特定的函数或类型(例如listOfmapOf等),那么我当然需要stdlib,但是如果我坚持使用纯Java类型并且功能,那么这可能吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您要寻找的东西,但是我能够使用IntelliJ Idea 2018.3来构建并运行此简单程序

fun main() {
    System.out.println("hello world")
}

以及以下build.gradle文件

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.11'
}
apply plugin: 'application'
mainClassName = "MainKt"
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}


compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

我在jar文件中看到的除了META-INF文件夹之外的唯一东西是我的MainKt.class 我可以使用

在jvm上运行它
java -classpath simple.jar MainKt

我认为,如果您不包括标准库,您甚至无法使用Kotlin的println函数,因此您必须诉诸于Java的System.out.println方法