ПРЕДУПРЕЖДЕНИЕ: 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
}
Ответы
Ответ 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 года.
Ответ 9
Вы можете запустить эту команду в корневом проекте
gradlew -Pandroid.debug.obsoleteApi=true
и предупреждение исчезнет.
Ответ 10
Только что обновлен до плагина "v1.3.40-release-Studio3.4-1".
как вы можете видеть в https://youtrack.jetbrains.com/issue/KT-30784
Ответ 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"
}
}