我正在尝试将Kotlin配置为在我的Android项目中使用Java 1.8。我尝试将compileKotlin
块添加到build.gradle
文件的底部,但是如果这样做,则会出现错误。
发生的错误如下:
没有此块,项目运行正常。我想念什么?这是完整的build.gradle
文件,它是非常基本的东西:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
minSdkVersion 24
targetSdkVersion 25
versionCode 1
versionName '1.0.0'
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:25.3.1'
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile 'com.google.android.support:wearable:2.0.2'
}
repositories {
mavenCentral()
}
compileKotlin {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
kotlinOptions {
jvmTarget = '1.8'
apiVersion = '1.1'
languageVersion = '1.1'
}
}
最佳答案
您收到的错误意味着该项目中没有compileKotlin
任务,而这对于Android项目是预期的。
Android项目中的Kotlin编译任务名称包含build variant名称(这些名称是由构建类型,产品 flavor 和其他设置组合而成的,看起来像debug
或releaseUnitTest
-这些任务分别是compileDebugKotlin
和compileReleaseUnitTestKotlin
)。没有compileKotlin
任务,通常是为普通Java + Kotlin项目中设置的main
源创建的。
最有可能的是,您想要配置项目中的所有Kotlin编译任务,并且要执行此操作,可以按如下所示应用该块:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
kotlinOptions {
jvmTarget = '1.8'
apiVersion = '1.1'
languageVersion = '1.1'
}
}