web-dev-qa-db-ja.com

警告:API 'variant.getPackageLibrary()'は廃止され、 'variant.getPackageLibraryProvider()'に置き換えられました

Kotlinを1.3.30に更新しましたが、gradleを同期するときにこのエラーが発生します。

警告:API 'variant.getPackageLibrary()'は廃止され、 'variant.getPackageLibraryProvider()'に置き換えられました。 2019年末に削除される予定です。詳しくは、 https://d.Android.com/r/tools/task-configuration-avoidance をご覧ください。何がvariant.getPackageLibrary()を呼び出しているかを判別するには、コマンドラインで-Pandroid.debug.obsoleteApi = trueを使用してスタックトレースを表示します。影響を受けるモジュール:hydatabase

これが私の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

このコマンドはルートプロジェクトで実行できます

gradlew -Pandroid.debug.obsoleteApi=true

そして警告は消えます。

0
Tony

「v1.3.40-release-Studio3.4-1」プラグインに更新されました。

あなたが見ることができるように https://youtrack.jetbrains.com/issue/KT-30784

0
Reza Bigdeli

ライブラリプラグインでkotlinプラグインを使用すると、この問題が発生しました。アプリケーションプラグインでkotlinプラグインを使用すると、うまく機能することがわかりました。しかし、kotlinプラグインをライブラリプラグインと一緒に使用すると、この問題が発生します。つまり:

// 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'

エラーがそれを表示したので、./gradlew -Pandroid.debug.obsoleteApi=true --stacktraceこの問題の原因となったモジュールを確認する。

その後、私のモジュールの1つが上記の間違ったプラグインの組み合わせを使用していることがわかりました。そして、それはkotlinプラグインのバグのようです。それで、最後に、kotlinプラグインをアップグレードしましたが、うまくいきました。以下は、最終的に使用したkotlinプラグインです。

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