J'essaie de configurer Kotlin pour qu'il fonctionne avec Java 1.8 dans mon projet Android. J'ai essayé d'ajouter le bloc compileKotlin
au niveau en bas de mon fichier build.gradle
, mais j'obtiens une erreur si je le fais.
L'erreur qui se produit est la suivante:
Erreur: (38, 0) Impossible de trouver la méthode compileKotlin () pour les arguments [build_dvcqiof5pov8xt8flfud06cm3 $ _run_closure4 @ 66047120] sur le projet ': core' de type org.gradle.api.Project.
Le projet fonctionne bien sans ce bloc. Qu'est-ce que je rate? Voici le fichier build.gradle
Complet, c'est assez basique:
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'
}
}
L'erreur que vous obtenez signifie qu'il n'y a pas de tâche compileKotlin
dans le projet, et cela est prévu pour les projets Android.
Les noms des tâches de compilation Kotlin dans Android contiennent les noms variante de build (ceux-ci sont combinés à partir du type de build, de la saveur du produit et d'autres paramètres et ressemblent à debug
ou releaseUnitTest
- les tâches sont respectivement compileDebugKotlin
et compileReleaseUnitTestKotlin
). Il n'y a pas de tâche compileKotlin
, qui est généralement créée pour le main
source définie en ordinaire Java + projets Kotlin.
Vous souhaitez probablement configurer toutes les tâches de compilation Kotlin dans le projet, et pour ce faire, vous pouvez appliquer le bloc comme suit:
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'
}
}
De la documentation kotlin-Android :
Le plugin Android ajoute également l'extension kotlinOptions à Android pour définir les options pour toutes les tâches kotlin:
Android {
kotlinOptions {
jvmTarget = '1.8'
noStdlib = true
}
}