web-dev-qa-db-fra.com

AVERTISSEMENT: l'API 'variant.getPackageLibrary ()' est obsolète et a été remplacée par 'variant.getPackageLibraryProvider ()'

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
}
48
Benjamin

Vous pouvez exécuter cette commande dans le projet racine

gradlew -Pandroid.debug.obsoleteApi=true

et l'avertissement disparaîtra.

0
Tony

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

0
Reza Bigdeli

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"
    }
}
0
YanQing