警告:API 'variant.getJavaCompile()' 已过时并已替换为 'variant.getJavaCompileProvider()'
WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'
同步 Gradle 时,我突然收到此错误:
WARNING: API 'variant.getJavaCompile()' is obsolete and has been
replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
Affected Modules: app
我为应用程序模块准备了这个 build.gradle
:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "..."
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "..."
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
versionNameSuffix = version_suffix
[...]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
[...]
}
debug {
[...]
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.61"
implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "com.android.support:preference-v7:28.0.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
implementation 'com.google.android.material:material:1.0.0-rc02'
[...]
}
我可以正确编译该应用程序,但有点麻烦,而且据我所知,某些东西将在 2019 年底停止工作。关于它是什么以及如何解决它有什么想法吗?
这只是一个警告,它可能会在 2019 年之前通过插件更新得到修复,所以不用担心。我建议您使用兼容版本的插件和 gradle.
您可以在此处检查您的插件版本和 gradle 版本以获得更好的体验和性能。
https://developer.android.com/studio/releases/gradle-plugin
尝试使用稳定版本以获得流畅且 warning/error 免费的代码。
这是构建工具发出的警告,有两个原因。
1.其中一个插件依赖Task而不是TaskProvider,我们无能为力
2. 你已经配置了task的用法,因为它支持TaskProvider。
WARNING: API 'variant.getGenerateBuildConfig()' is obsolete and has been replaced with 'variant.getGenerateBuildConfigProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
注意下面的片段并更新。
android {
<library|application>Variants.all { variant ->
/* Disable Generating Build config */
// variant.generateBuildConfig.enabled = true // <- Deprecated
variant.generateBuildConfigProvider.configure {
it.enabled = true // Replacement
}
}
}
类似地,查找'variant.getJavaCompile()'
或'variant.javaCompile'
、'variant.getMergeResources()'
或'variant.mergeResources'
的用法。替换如上。
从类路径 'com.android.tools.build:gradle:3.3.0-alpha13' 返回到类路径 'com.android.tools.build:gradle:3.2.0'
这对我有用
这是一个临时解决方法,如果您正在使用房间,只需升级到 1.1.0 或更高版本
implementation "android.arch.persistence.room:runtime:1.1.0"
它为我删除了这个警告。
升级 Kotlin(Plugin 和 stdLib) 版本 到 1.3.1 解决了我的警告。通过将现有 Kotlin 版本替换为:
来更新整个项目中的 Kotlin 版本
ext.kotlin_version = '1.3.50'
正在将 gradle 更新为 gradle:3.3.0
默认的 'assemble' 任务仅适用于普通变体。也添加测试变体。
android.testVariants.all { variant ->
tasks.getByName('assemble').dependsOn variant.getAssembleProvider()
}
也评论应用面料
//apply plugin: 'io.fabric'
我更新到 3.3.0 后遇到这个问题
如果您没有按照 gradle 文件中的错误说明执行操作,则可能是某些插件仍未更新到较新的 API 导致此问题。要弄清楚它是哪个插件,请执行以下操作(如 "Better debug info when using obsolete API" of 3.3.0 announcement 中所述):
- 将 'android.debug.obsoleteApi=true' 添加到您的 gradle.properties 文件,该文件将记录错误并提供更多详细信息
- 重试并阅读日志详细信息。会有一丝"problematic"插件
- 当你识别时,尝试禁用它,看看问题是否消失,以确保
- 前往插件的github页面并创建问题,其中将包含详细的日志和清晰的描述,以便您帮助开发人员更快地为所有人修复它
- 在他们修复它时要有耐心,或者你修复它并为开发者创建 PR
希望对别人有帮助
就我而言,我不得不注释掉 com.google.firebase.firebase-crash
插件:
apply plugin: 'com.android.application'
// apply plugin: 'com.google.firebase.firebase-crash' <== this plugin causes the error
这是自 Android Studio 3.3.0
以来的错误
如果我从 application gradle
中删除这一行:
apply plugin: 'io.fabric'
错误不会再出现了。
当插件检测到您使用的 API 不再受支持时,它现在可以提供更详细的信息来帮助您确定 API 的使用位置。要查看附加信息,您需要在项目的 gradle.properties 文件中包含以下内容:
android.debug.obsoleteApi=true
降级 Gradle 的版本对我有用:
classpath 'com.android.tools.build:gradle:3.2.0'
以我为例
build.gradle(Project)
是
ext.kotlin_version = '1.2.71'
更新为
ext.kotlin_version = '1.3.0'
看起来问题暂时解决了
将 fabric 插件更新为项目级别 Gradle 文件(而非应用程序级别)的最新版本。就我而言,这条线解决了问题
classpath 'io.fabric.tools:gradle:1.25.4'
至
classpath 'io.fabric.tools:gradle:1.29.0'
此问题现已通过更新 Fabric Gradle 版本 1.30.0 解决:
更新发布:2019 年 3 月 19 日
请看这个Link:https://docs.fabric.io/android/changelog.html#march-15-2019
请更新项目级别的类路径依赖项 Gradle:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
classpath 'io.fabric.tools:gradle:1.30.0'
}
}
保持你的项目(不是应用程序)Build.gradle依赖类路径版本代码是新的
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0-beta01'
classpath 'com.novoda:bintray-release:0.8.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
就我而言,它是由 gms 服务 4.3.0 引起的。所以我不得不将其更改为:
com.google.gms:google-services:4.2.0
我通过 运行 找到了这个:
gradlew sync -Pandroid.debug.obsoleteApi=true
在终端中。转到查看 -> 工具 windows -> Android Studio 中的终端。
这解决了我的问题。我需要做的就是降级 build.gradle(Project) 级别文件中 buildscript 中的 google-services 插件,如下所示
buildscript{
dependencies {
// From =>
classpath 'com.google.gms:google-services:4.3.0'
// To =>
classpath 'com.google.gms:google-services:4.2.0'
// Add dependency
classpath 'io.fabric.tools:gradle:1.28.1'
}
}
Migrate your project to androidX.
依赖升级到androidX。所以如果你想使用 androidX 内容 migrate your project to androidX.
使用 Android Studio 3.2 及更高版本,您可以通过从菜单栏中选择重构 > 迁移到 AndroidX 来快速迁移现有项目以使用 AndroidX。
Downgrading dependencies may fix your problem this time - but not recommended
我也遇到了同样的问题。又找了一会儿,才知道是因为使用了最新版本的google-services
插件(4.3.0版)才出现这个警告的。顺便说一句,我在我的应用程序中使用这个插件来实现 Firebase 功能。
我所做的只是在 build.gradle(Project) 级别文件中的 buildscript 中降级我的 google-services
插件,如下所示:
buildscript{
dependencies {
// From =>
classpath 'com.google.gms:google-services:4.3.0'
// To =>
classpath 'com.google.gms:google-services:4.2.0'
}
}
这是一个热门问题。如果您不使用这些方法,解决方案是更新库。
请更新您的 kotlin 版本,以及您所有的依赖项,例如 fabric、protobuf 等。如果您确定如果您已更新所有内容,请尝试询问库的作者。
从您的 build.gradle
更改您的 Google 服务版本:
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
1) 将 android.debug.obsoleteApi=true
添加到您的 gradle.properties
。它将显示哪些模块受到警告日志的影响。
2) 更新这些已弃用的函数。
variant.javaCompile
到 variant.javaCompileProvider
variant.javaCompile.destinationDir
到
variant.javaCompileProvider.get().destinationDir
将 protobuf-gradle-plugin 升级到版本 0.8.10 解决了我的问题。用
替换现有的 protobuf
classpath 'gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.10'
这主要是由于库已过时。要手动检查新更新,您应该导航至
Analyze > "Run Inspection By Name"
这应该够了。另一种选择是 运行 gradle 依赖更新使用
./gradlew dependencyUpdates
将生成如下报告:
:dependencyUpdates
------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------
The following dependencies are using the latest milestone version:
- com.github.ben-manes:gradle-versions-plugin:0.15.0
The following dependencies have later milestone versions:
- com.google.auto.value:auto-value [1.4 -> 1.4.1]
- com.google.errorprone:error_prone_core [2.0.19 -> 2.0.21]
- com.google.guava:guava [21.0 -> 23.0-rc1]
- net.ltgt.gradle:gradle-apt-plugin [0.9 -> 0.10]
- net.ltgt.gradle:gradle-errorprone-plugin [0.0.10 -> 0.0.11]
...
升级项目级别的 google 服务 build.gradle
解决了我的问题。
升级后:
dependencies {
...
classpath 'com.google.gms:google-services:4.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
我有同样的问题,它通过在 build.gradle 文件中定义 kotlin gradle 插件版本解决了。
改变这个
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
至
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50{or latest version}"
就我而言,我遵循了 。
摘要,在 gradle 应用级别:更改此:
variant.outputs.all { output ->
variant.assemble.doLast {
....
}
}
到
variant.outputs.all { output ->
variant.getAssembleProvider().configure() {
it.doLast {
....
}
}
同步 Gradle 时,我突然收到此错误:
WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'. It will be removed at the end of 2019. For more information, see https://d.android.com/r/tools/task-configuration-avoidance Affected Modules: app
我为应用程序模块准备了这个 build.gradle
:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "..."
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "..."
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
versionNameSuffix = version_suffix
[...]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
[...]
}
debug {
[...]
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.61"
implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "com.android.support:preference-v7:28.0.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
implementation 'com.google.android.material:material:1.0.0-rc02'
[...]
}
我可以正确编译该应用程序,但有点麻烦,而且据我所知,某些东西将在 2019 年底停止工作。关于它是什么以及如何解决它有什么想法吗?
这只是一个警告,它可能会在 2019 年之前通过插件更新得到修复,所以不用担心。我建议您使用兼容版本的插件和 gradle.
您可以在此处检查您的插件版本和 gradle 版本以获得更好的体验和性能。
https://developer.android.com/studio/releases/gradle-plugin
尝试使用稳定版本以获得流畅且 warning/error 免费的代码。
这是构建工具发出的警告,有两个原因。
1.其中一个插件依赖Task而不是TaskProvider,我们无能为力
2. 你已经配置了task的用法,因为它支持TaskProvider。
WARNING: API 'variant.getGenerateBuildConfig()' is obsolete and has been replaced with 'variant.getGenerateBuildConfigProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
注意下面的片段并更新。
android {
<library|application>Variants.all { variant ->
/* Disable Generating Build config */
// variant.generateBuildConfig.enabled = true // <- Deprecated
variant.generateBuildConfigProvider.configure {
it.enabled = true // Replacement
}
}
}
类似地,查找'variant.getJavaCompile()'
或'variant.javaCompile'
、'variant.getMergeResources()'
或'variant.mergeResources'
的用法。替换如上。
从类路径 'com.android.tools.build:gradle:3.3.0-alpha13' 返回到类路径 'com.android.tools.build:gradle:3.2.0'
这对我有用
这是一个临时解决方法,如果您正在使用房间,只需升级到 1.1.0 或更高版本
implementation "android.arch.persistence.room:runtime:1.1.0"
它为我删除了这个警告。
升级 Kotlin(Plugin 和 stdLib) 版本 到 1.3.1 解决了我的警告。通过将现有 Kotlin 版本替换为:
来更新整个项目中的 Kotlin 版本ext.kotlin_version = '1.3.50'
正在将 gradle 更新为 gradle:3.3.0
默认的 'assemble' 任务仅适用于普通变体。也添加测试变体。
android.testVariants.all { variant ->
tasks.getByName('assemble').dependsOn variant.getAssembleProvider()
}
也评论应用面料
//apply plugin: 'io.fabric'
我更新到 3.3.0 后遇到这个问题
如果您没有按照 gradle 文件中的错误说明执行操作,则可能是某些插件仍未更新到较新的 API 导致此问题。要弄清楚它是哪个插件,请执行以下操作(如 "Better debug info when using obsolete API" of 3.3.0 announcement 中所述):
- 将 'android.debug.obsoleteApi=true' 添加到您的 gradle.properties 文件,该文件将记录错误并提供更多详细信息
- 重试并阅读日志详细信息。会有一丝"problematic"插件
- 当你识别时,尝试禁用它,看看问题是否消失,以确保
- 前往插件的github页面并创建问题,其中将包含详细的日志和清晰的描述,以便您帮助开发人员更快地为所有人修复它
- 在他们修复它时要有耐心,或者你修复它并为开发者创建 PR
希望对别人有帮助
就我而言,我不得不注释掉 com.google.firebase.firebase-crash
插件:
apply plugin: 'com.android.application'
// apply plugin: 'com.google.firebase.firebase-crash' <== this plugin causes the error
这是自 Android Studio 3.3.0
以来的错误如果我从 application gradle
中删除这一行:
apply plugin: 'io.fabric'
错误不会再出现了。
当插件检测到您使用的 API 不再受支持时,它现在可以提供更详细的信息来帮助您确定 API 的使用位置。要查看附加信息,您需要在项目的 gradle.properties 文件中包含以下内容:
android.debug.obsoleteApi=true
降级 Gradle 的版本对我有用:
classpath 'com.android.tools.build:gradle:3.2.0'
以我为例
build.gradle(Project)
是
ext.kotlin_version = '1.2.71'
更新为
ext.kotlin_version = '1.3.0'
看起来问题暂时解决了
将 fabric 插件更新为项目级别 Gradle 文件(而非应用程序级别)的最新版本。就我而言,这条线解决了问题
classpath 'io.fabric.tools:gradle:1.25.4'
至
classpath 'io.fabric.tools:gradle:1.29.0'
此问题现已通过更新 Fabric Gradle 版本 1.30.0 解决:
更新发布:2019 年 3 月 19 日
请看这个Link:https://docs.fabric.io/android/changelog.html#march-15-2019
请更新项目级别的类路径依赖项 Gradle:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
classpath 'io.fabric.tools:gradle:1.30.0'
}
}
保持你的项目(不是应用程序)Build.gradle依赖类路径版本代码是新的
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0-beta01'
classpath 'com.novoda:bintray-release:0.8.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
就我而言,它是由 gms 服务 4.3.0 引起的。所以我不得不将其更改为:
com.google.gms:google-services:4.2.0
我通过 运行 找到了这个:
gradlew sync -Pandroid.debug.obsoleteApi=true
在终端中。转到查看 -> 工具 windows -> Android Studio 中的终端。
这解决了我的问题。我需要做的就是降级 build.gradle(Project) 级别文件中 buildscript 中的 google-services 插件,如下所示
buildscript{
dependencies {
// From =>
classpath 'com.google.gms:google-services:4.3.0'
// To =>
classpath 'com.google.gms:google-services:4.2.0'
// Add dependency
classpath 'io.fabric.tools:gradle:1.28.1'
}
}
Migrate your project to androidX.
依赖升级到androidX。所以如果你想使用 androidX 内容 migrate your project to androidX.
使用 Android Studio 3.2 及更高版本,您可以通过从菜单栏中选择重构 > 迁移到 AndroidX 来快速迁移现有项目以使用 AndroidX。
Downgrading dependencies may fix your problem this time - but not recommended
我也遇到了同样的问题。又找了一会儿,才知道是因为使用了最新版本的google-services
插件(4.3.0版)才出现这个警告的。顺便说一句,我在我的应用程序中使用这个插件来实现 Firebase 功能。
我所做的只是在 build.gradle(Project) 级别文件中的 buildscript 中降级我的 google-services
插件,如下所示:
buildscript{
dependencies {
// From =>
classpath 'com.google.gms:google-services:4.3.0'
// To =>
classpath 'com.google.gms:google-services:4.2.0'
}
}
这是一个热门问题。如果您不使用这些方法,解决方案是更新库。 请更新您的 kotlin 版本,以及您所有的依赖项,例如 fabric、protobuf 等。如果您确定如果您已更新所有内容,请尝试询问库的作者。
从您的 build.gradle
更改您的 Google 服务版本:
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
1) 将 android.debug.obsoleteApi=true
添加到您的 gradle.properties
。它将显示哪些模块受到警告日志的影响。
2) 更新这些已弃用的函数。
variant.javaCompile
到variant.javaCompileProvider
variant.javaCompile.destinationDir
到variant.javaCompileProvider.get().destinationDir
将 protobuf-gradle-plugin 升级到版本 0.8.10 解决了我的问题。用
替换现有的 protobufclasspath 'gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.10'
这主要是由于库已过时。要手动检查新更新,您应该导航至
Analyze > "Run Inspection By Name"
这应该够了。另一种选择是 运行 gradle 依赖更新使用
./gradlew dependencyUpdates
将生成如下报告:
:dependencyUpdates
------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------
The following dependencies are using the latest milestone version:
- com.github.ben-manes:gradle-versions-plugin:0.15.0
The following dependencies have later milestone versions:
- com.google.auto.value:auto-value [1.4 -> 1.4.1]
- com.google.errorprone:error_prone_core [2.0.19 -> 2.0.21]
- com.google.guava:guava [21.0 -> 23.0-rc1]
- net.ltgt.gradle:gradle-apt-plugin [0.9 -> 0.10]
- net.ltgt.gradle:gradle-errorprone-plugin [0.0.10 -> 0.0.11]
...
升级项目级别的 google 服务 build.gradle
解决了我的问题。
升级后:
dependencies {
...
classpath 'com.google.gms:google-services:4.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
我有同样的问题,它通过在 build.gradle 文件中定义 kotlin gradle 插件版本解决了。
改变这个
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
至
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50{or latest version}"
就我而言,我遵循了
variant.outputs.all { output ->
variant.assemble.doLast {
....
}
}
到
variant.outputs.all { output ->
variant.getAssembleProvider().configure() {
it.doLast {
....
}
}