我试图在我的Android项目中配置Kotlin以使用Java 1.8。我已尝试在compileKotlin
文件的底部添加build.gradle
块,但如果我这样做,则会收到错误。
发生的错误如下:
错误:(38,0)无法为参数找到方法compileKotlin() 项目[build_dvcqiof5pov8xt8flfud06cm3 $ _run_closure4 @ 66047120] ':芯'类型为org.gradle.api.Project。
项目运行良好,没有这个块。我错过了什么?这是完整的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'
}
}
答案 0 :(得分:55)
您获得的错误意味着项目中没有compileKotlin
任务,这是Android项目所期望的。
Android项目中的Kotlin编译任务名称包含build variant名称(这些名称由构建类型,产品风格和其他设置组合而成,看起来像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'
}
}
答案 1 :(得分:2)
来自kotlin-android documentation:
Android插件还向Android部分添加了 kotlinOptions 扩展名,以设置所有kotlin任务的选项:
android {
kotlinOptions {
jvmTarget = '1.8'
noStdlib = true
}
}
答案 2 :(得分:1)
不是该问题的直接答案,但是当遇到相同的compileKotlin block in build.gradle file throws error “Could not find method compileKotlin() for arguments […]”
错误时,Google引导我找到了这个答案。
对于我来说,问题是由于将代码模块导入到仅包含Java代码的项目中引起的。解决方法是确保以下内容位于Java专用模块的build.gradle
中:
apply plugin: 'kotlin-android'