ПРЕДУПРЕЖДЕНИЕ: API 'option.getPackageLibrary ()' устарел и был заменен на 'option.getPackageLibraryProvider ()' - PullRequest
38 голосов
/ 12 апреля 2019

Я только что обновил kotlin до 1.3.30, и теперь я получаю эту ошибку при синхронизации gradle:

ПРЕДУПРЕЖДЕНИЕ: API 'option.getPackageLibrary ()' устарел и был заменен на "variable.getPackageLibraryProvider ()". Это будет удалены в конце 2019 года. Для получения дополнительной информации см. https://d.android.com/r/tools/task-configuration-avoidance. К определите, что вызывает option.getPackageLibrary (), используйте -Pandroid.debug.obsoleteApi = true в командной строке для отображения трассировки стека. Затронутые модули: база данных

Вот мой 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
}

Ответы [ 9 ]

42 голосов
/ 12 апреля 2019

Если вы отлаживаете, он показывает REASON: The Kotlin plugin is currently calling this API. We are working to solve this.

Чтобы увидеть эту ошибку, пожалуйста, запустите ./gradlew -Pandroid.debug.obsoleteApi=true --stacktrace

8 голосов
/ 09 мая 2019

Как сказал tommyboy, плагин Kotlin вызывает этот устаревший API. Если вы не хотите получать это предупреждение, пока Kotlin работает над этим, вы можете просто использовать предыдущую версию плагина Kotlin, например:

dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21"
}
3 голосов
/ 16 мая 2019

Это проблема с плагином Kotlin, так как упоминается здесь . Это будет исправлено в более поздней версии.

3 голосов
/ 12 апреля 2019

Вероятно, это ошибка, и она скоро будет исправлена ​​

Вы можете вернуться к предыдущей версии или добавить эту строку в gradle.properties

android.debug.obsoleteApi=true
1 голос
/ 13 апреля 2019

После того, как я обновил Kotlin до 1.3.30, следующие зависимости вызывают ошибку:

dependencies {
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
    // ... other dependencies
}

Я сообщил о проблеме здесь:

https://github.com/bintray/gradle-bintray-plugin/issues/284

https://github.com/dcendents/android-maven-gradle-plugin/issues/81

Кстати, вы можете игнорировать это сообщение об ошибке.

0 голосов
/ 22 июля 2019

В моем файле проекта у меня был

buildscript {
    ext.kotlin_version = '1.3.31'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

Простая смена ext.kotlin_version = '1.3.31' до ext.kotlin_version = '1.3.41' решена проблема

при использовании версии 1.3.31 я пробовал gradlew -Pandroid.debug.obsoleteApi=true

Упоминается

ПРЕДУПРЕЖДЕНИЕ: API 'option.getPackageLibrary ()' устарел и был заменен на "variable.getPackageLibraryProvider ()". Это будет снят в конце 2019 года. Для получения дополнительной информации см. https://d.android.com/r/tools/task-configuration-avoidance.

ПРИЧИНА: Плагин Kotlin в настоящее время вызывает этот API. Мы работаем над этим.

ВНИМАНИЕ: отладка устаревших вызовов API может занять некоторое время конфигурации. Рекомендуется не включать его постоянно.

Похоже, это решено в 1.3.41

0 голосов
/ 01 июля 2019

Я столкнулся с этой проблемой, когда использовал плагин 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, чтобы выяснить, с каким модулем возникла эта проблема.

Затем я обнаружил, что один из моих модулей использовал неправильную комбинацию плагинов выше. И это, похоже, ошибка в плагине 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 голосов
/ 25 июня 2019

Только что обновлен до плагина "v1.3.40-release-Studio3.4-1".

, как вы можете видеть в https://youtrack.jetbrains.com/issue/KT-30784

0 голосов
/ 22 мая 2019

Вы можете запустить эту команду в корневом проекте

gradlew -Pandroid.debug.obsoleteApi=true

, и предупреждение исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...