J'essaie d'utiliser Kotlin dans un module de bibliothèque sans l'utiliser dans le module d'application. Le module d'application utilise uniquement Java et n'utilise aucune classe Kotlin de la bibliothèque. Gradle ne compilera pas hoever:
Error:(2, 1) A problem occurred evaluating project ':<Library>'.
> Plugin with id 'kotlin-Android' not found.
Modifications que j'ai apportées pour inclure Kotlin:
{racine de la bibliothèque}/build.gradle
buildscript {
ext.kotlin_version = '1.1.3-2'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
...
}
allprojects {
repositories {
jcenter()
}
}
{racine de bibliothèque}/{module de bibliothèque}/build.gradle
apply plugin: 'com.Android.library'
apply plugin: 'kotlin-Android'
...
dependencies{
...
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
Lorsque j'ajoute la même chose au module d'application, le projet se compile sans problème, mais je voudrais éviter de l'ajouter dans le module d'application parce que j'aimerais utiliser cette bibliothèque dans plusieurs applications sans apporter de modifications de code à ces applications
Version Gradle utilisée: 3.3 Android version plugin Gradle: 2.3.3
Edit: @ La réponse de Jushua fonctionne, mais elle nécessite toujours de mettre à jour la racine du projet build.gradle. J'espérais une solution où seule la dépendance à la bibliothèque devrait être ajoutée pour que tout fonctionne.
Je peux le faire sans aucun problème.
build.gradle (Projet)
buildscript {
ext.kotlin_version = "1.1.4"
repositories {
jcenter()
}
dependencies {
classpath "com.Android.tools.build:gradle:2.3.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
build.gradle (app)
apply plugin: "com.Android.application"
Android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile("proguard-Android.txt"), "proguard-rules.pro"
}
}
}
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
androidTestCompile("com.Android.support.test.espresso:espresso-core:2.2.2", {
exclude group: "com.Android.support", module: "support-annotations"
})
compile "com.Android.support:appcompat-v7:26.0.1"
testCompile "junit:junit:4.12"
compile project(path: ":library")
}
build.gradle (bibliothèque)
apply plugin: "com.Android.library"
apply plugin: "kotlin-Android"
apply plugin: "kotlin-Android-extensions"
Android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 17
targetSdkVersion 26
versionCode 13
versionName "1.1.4"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile("proguard-Android.txt"), "proguard-rules.pro"
}
}
}
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
androidTestCompile("com.Android.support.test.espresso:espresso-core:2.2.2", {
exclude group: "com.Android.support", module: "support-annotations"
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile "com.Android.support:appcompat-v7:26.0.1"
testCompile "junit:junit:4.12"
}
Vous avez juste besoin d'ajouter dans votre build de module:
buildscript {
// (Optional) ext.kotlin_version = '1.1.4-3'
repositories {
google()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'com.Android.library'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
et vous pouvez soit déclarer le kotlin_version
variable dans cette build spécifique, ou la déclarer dans le fichier de build racine du projet, car la version de kotlin peut être mise à jour à partir d'autres modules:
buildscript {
ext.kotlin_version = '1.1.4-3'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.0-beta3'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}