Je viens de mettre à jour kotlin à 1.3.30 et j'obtiens maintenant cette erreur lors de la synchronisation de gradle:
AVERTISSEMENT: l'API 'variant.getPackageLibrary ()' est obsolète et a été remplacée par 'variant.getPackageLibraryProvider ()'. Il sera supprimé à la fin de 2019. Pour plus d'informations, voir https://d.Android.com/r/tools/task-configuration-avoidance . Pour déterminer ce qui appelle variant.getPackageLibrary (), utilisez -Pandroid.debug.obsoleteApi = true sur la ligne de commande pour afficher une trace de pile. Modules concernés: hydatabase
Voici mon build.gradle
:
apply plugin: 'com.squareup.sqldelight'
apply plugin: 'kotlin-multiplatform'
apply plugin: 'com.Android.library'
Android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 19
}
lintOptions {
abortOnError false
}
}
sqldelight {
Database {
packageName = "com.company.hydatabase"
}
}
kotlin {
targets {
fromPreset(presets.jvm, 'jvm')
fromPreset(presets.Android, 'Android')
}
sourceSets {
commonMain.dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib-common'
}
jvmMain.dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
// ICU4J: Use DecimalFormat
// Get rid of this when minSDKLevel = API 24 - Nougat (7.0)
// https://developer.Android.com/guide/topics/resources/internationalization.html
api 'com.ibm.icu:icu4j:60.2'
}
androidMain.dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib'
api "com.squareup.sqldelight:Android-driver:1.1.1"
}
androidMain.dependsOn jvmMain
}
}
task copyDatabase(type: Copy) {
from "${rootProject.file('hyappcommon/Databases/').path}"
into "${rootProject.file('hydatabase/src/main/assets/databases/').path}"
include '**/*.sqlite'
}
preBuild.dependsOn(copyDatabase)
// workaround for https://youtrack.jetbrains.com/issue/KT-27170
configurations {
compileClasspath
}
Vous pouvez exécuter cette commande dans le projet racine
gradlew -Pandroid.debug.obsoleteApi=true
et l'avertissement disparaîtra.
Nous venons de mettre à jour le plugin "v1.3.40-release-Studio3.4-1".
comme vous pouvez le voir dans https://youtrack.jetbrains.com/issue/KT-30784
J'ai rencontré ce problème lorsque j'utilise le plugin kotlin avec le plugin de bibliothèque. J'ai trouvé que si vous utilisez le plugin kotlin avec le plugin d'application, cela fonctionne bien. Mais si vous utilisez le plugin kotlin avec le plugin de bibliothèque, cela posera ce problème. Donc ça signifie:
// work well:
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-Android-extensions'
// error:
apply plugin: 'com.Android.library'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-Android-extensions'
Comme l'erreur l'a montré, vous pouvez utiliser ./gradlew -Pandroid.debug.obsoleteApi=true --stacktrace
pour découvrir avec le module a provoqué ce problème.
Ensuite, j'ai trouvé que l'un de mes modules utilisait la mauvaise combinaison de plugins ci-dessus. Et cela semble être un bug du plugin kotlin. Donc, finalement, j'ai mis à jour le plugin kotlin, puis cela a bien fonctionné. Ci-dessous le plugin kotlin que j'ai finalement utilisé:
buildscript {
ext.kotlin_version = '1.3.40'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.4.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}