我是一名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桌面应用程序。
答案 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_version
。 jdk7
表示运行时不依赖Android缺少的Java 8 +。
但是,将来Kotlin版本的更改将要求您升级项目中的Kotlin版本。例如,使用1.2.71的项目可能无法访问所有Kotlin 1.3语法。
答案 1 :(得分:1)