我刚刚将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
}
答案 0 :(得分:22)
如果您调试,它会显示
REASON: The Kotlin plugin is currently calling this API. We are working to solve this.
答案 1 :(得分:5)
正如@tommyboy所说,Kotlin插件正在调用此已弃用的API。 如果您不想在Kotlin进行此操作时收到此警告,则可以使用以前版本的Kotlin插件,例如:
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21"
}
答案 2 :(得分:2)
这可能是一个错误,很快就会解决
您可以还原到以前的版本,或将此行添加到gradle.properties
android.debug.obsoleteApi=true
答案 3 :(得分:1)
将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
顺便说一句,您可以忽略该错误消息。
答案 4 :(得分:1)
问题是tracked here,并且已已修复。
只需使用Kotlin Gradle插件v 1.3.40或更高版本。
警告:API'variant.getPackageLibrary()'已过时,已被'variant.getPackageLibraryProvider()'取代。 它将在2019年底删除。
答案 5 :(得分:0)
这是Kotlin插件的问题,为mentioned here。它将在更高版本中得到修复。
答案 6 :(得分:0)
您可以在根项目“ gradlew -Pandroid.debug.obsoleteApi = true”中运行此命令,警告将消失。
答案 7 :(得分:0)
仅更新为“ v1.3.40-release-Studio3.4-1”插件。
您在the documentation中看到的
答案 8 :(得分:0)
当我将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"
}
}
答案 9 :(得分:0)
在我的项目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'variant.getPackageLibrary()'已过时,并且已经 替换为“ variant.getPackageLibraryProvider()”。这将是 在2019年底删除。 有关更多信息,请参见https://d.android.com/r/tools/task-configuration-avoidance。
原因:Kotlin插件当前正在调用此API。我们正在努力解决这个问题。
警告:调试过时的API调用可能会花费一些时间 组态。建议不要一直打开它。
好像在1.3.41中解决了