ПРЕДУПРЕЖДЕНИЕ: API 'option.getPackageLibrary()' устарел и был заменен на 'option.getPackageLibraryProvider()' - программирование
Подтвердить что ты не робот

ПРЕДУПРЕЖДЕНИЕ: API 'option.getPackageLibrary()' устарел и был заменен на 'option.getPackageLibraryProvider()'

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

ВНИМАНИЕ: API-интерфейс <option.getPackageLibrary()> устарел и был заменен на <вариант .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
}
4b9b3361

Ответ 1

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

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

Ответ 2

Это было исправлено путем обновления Android Gradle до 3.4.0:

classpath "com.android.tools.build:gradle:3.4.0"

Ответ 3

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

dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21"
}

Ответ 4

Это, вероятно, ошибка и исправлена в ближайшее время

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

android.debug.obsoleteApi=true

Ответ 5

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

Ответ 6

В моем файле проекта gradle я имел

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()> устарел и был заменен на <вариант .getPackageLibraryProvider() '. Он будет удален в конце 2019 года. Для получения дополнительной информации см. Https://d.android.com/r/tools/task-configuration-avoidance.

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

ПРЕДУПРЕЖДЕНИЕ. Отладка устаревших вызовов API может занять некоторое время во время настройки. Рекомендуется не держать его постоянно.

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

Ответ 7

После того, как я обновил 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

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

Ответ 8

Проблема отслеживается здесь и устранена.

Просто используйте плагин Kotlin Gradle v 1.3.40 или выше.

ВНИМАНИЕ: API-интерфейс устарел и был заменен на <вариант .getPackageLibraryProvider() '. Он будет удален в конце 2019 года.

enter image description here

Ответ 9

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

gradlew -Pandroid.debug.obsoleteApi=true

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

Ответ 11

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