Ik probeer Kotlin te configureren om met Java 1.8 te werken in mijn Android-project. Ik heb geprobeerd het compileKotlin
-blok toe te voegen aan de onderkant van mijn build.gradle
-bestand, maar ik krijg een foutmelding als ik dat doe.
De fout die optreedt is de volgende:
Fout:(38, 0) Kon methode compileKotlin() voor argumenten niet vinden
[[email protected]] op project
‘:core’ van het type org.gradle.api.Project.
Het project werkt prima zonder dit blok. Wat mis ik? Hier is het volledige build.gradle
-bestand, het is vrij eenvoudig:
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'
}
}
Antwoord 1, autoriteit 100%
De foutmelding die u krijgt, betekent dat er geen compileKotlin
-taak in het project zit, en dat wordt verwacht voor Android-projecten.
De namen van de Kotlin-compilatietaken in Android-projecten bevatten de buildvariantnamen (deze zijn gecombineerd van buildtype, productaroma en andere instellingen en zien eruit als debug
of releaseUnitTest
— de taken zijn compileDebugKotlin
en compileReleaseUnitTestKotlin
respectievelijk). Er is geen compileKotlin
-taak, die meestal wordt gemaakt voor de main
-bronset in gewone Java + Kotlin-projecten.
Hoogstwaarschijnlijk wilt u alleKotlin-compilatietaken in het project configureren, en om dat te doen, kunt u het blok als volgt toepassen:
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'
}
}
Antwoord 2, autoriteit 45%
Van de kotlin-android documentatie:
Android-plug-in voegt ook de extensie kotlinOptionstoe aan de Android-sectie om opties in te stellen voor alle kotlin-taken:
android {
kotlinOptions {
jvmTarget = '1.8'
noStdlib = true
}
}
Antwoord 3, autoriteit 2%
Geen direct antwoord op de vraag, maar Google leidde me naar dit antwoord toen hetzelfde compileKotlin block in build.gradle file throws error “Could not find method compileKotlin() for arguments […]”
fout.
In mijn geval werd het probleem veroorzaakt door het importeren van een codemodule in mijn project die alleen Java-code bevatte. De oplossing was om ervoor te zorgen dat het volgende in build.gradle
van de Java-specifieke module staat:
apply plugin: 'kotlin-android'