Android Studio是否支持所有Kotlin功能和API?

时间:2019-01-29 23:43:58

标签: android kotlin

我是一名Android开发人员,有一个有关Kotlin的一般问题。 Android Studio是否支持所有Kotlin功能和API?我敢肯定,所有基本类型和运算符均得到完全支持,并且Android Studio可以编译。是否可以安全地假设完全支持Function,Lambda,Coroutines等?例如,当宣布对Android Studio的Java 8支持时,有一个文档网站说明了支持哪些Java 8功能,而哪些不支持:

https://developer.android.com/studio/write/java8-support#supported_features

但是Kotlin并不存在。我假设它是一行标准的Kotlin代码,它将在Android Studio中编译,对吗?

我提出这个问题的原因是,我与一组Java服务器(主要是春季启动)和JavaFX开发人员一起工作,并且我们希望共享尽可能多的代码。 Android中缺乏Java 8兼容性为我们带来了一些问题。我们正在寻求将大多数代码转换为Kotlin。我想假设所有的标准功能:

https://kotlinlang.org/api/latest/jvm/stdlib/index.html

希望所有协程功能:

https://kotlinlang.org/docs/reference/coroutines/coroutines-guide.html

我们将完全支持使用Android Studio构建的Android应用程序和使用IntelliJ构建的Java桌面应用程序。

2 个答案:

答案 0 :(得分:2)

在一定程度上,您可以控制要使用的Kotlin版本,以及可用的功能。

如果您有启用了Kotlin的Android Studio项目,并且在顶级build.gradle文件中查找,则可能会看到类似以下的代码:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
  ext.kotlin_version = '1.3.20'
  repositories {
    google()
    jcenter()

  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.3.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
  }
}

allprojects {
  repositories {
    google()
    jcenter()

  }
}

task clean(type: Delete) {
  delete rootProject.buildDir
}

ext.kotlin_version = '1.3.20'控制将用于Kotlin插件的Kotlin版本(通过classpath指令中的插值字符串),以及类似地用于模块build.gradle中的Kotlin运行时依赖项文件。

因此,具有以上代码的项目可以使用Kotlin 1.3.20支持的Kotlin / JVM功能。

我们今天使用的运行时依赖项是org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_versionjdk7表示运行时不依赖Android缺少的Java 8 +。

但是,将来Kotlin版本的更改将要求您升级项目中的Kotlin版本。例如,使用1.2.71的项目可能无法访问所有Kotlin 1.3语法。

答案 1 :(得分:1)

Kotlin受到Android和Android Studio的完全支持,甚至在Android网站上刊登广告:

  

Kotlin已为您的Android应用开发做好了生产准备。

Source