在同步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年底停止工作。有关它是什么以及如何解决的任何想法?
答案 0 :(得分:52)
更新到3.3.0后我会遇到此问题
如果您没有执行gradle文件中的错误状态,则是某些插件仍未更新到较新的API导致了此问题。要确定是哪个插件,请执行以下操作(如"Better debug info when using obsolete API" of 3.3.0 announcement中所述):
希望对别人有帮助
答案 1 :(得分:31)
这只是一个警告,它可能会在2019年之前通过插件更新进行修复,因此请不必担心。我建议您使用兼容版本的插件和gradle。
您可以在此处检查插件版本和gradle版本,以获得更好的体验和性能。
https://developer.android.com/studio/releases/gradle-plugin
尝试使用稳定的版本来获得平滑且警告/无错误的代码。
答案 2 :(得分:26)
在我的情况下,这是由gms服务4.3.0引起的。所以我不得不将其更改为:
com.google.gms:google-services:4.2.0
我通过运行找到了这个
gradlew sync -Pandroid.debug.obsoleteApi=true
在终端中。转到查看->工具窗口-> Android Studio中的终端。
答案 3 :(得分:22)
此问题已通过更新Fabric Gradle 1.28.0版修复:
更新版本:2019年3月19日
请查看此链接:https://docs.fabric.io/android/changelog.html#march-15-2019
请在项目级别Gradle中更新您的类路径依赖项:
buildscript {
// ... repositories, etc. ...
dependencies {
// ...other dependencies ...
classpath 'io.fabric.tools:gradle:1.28.0'
}
}
答案 4 :(得分:5)
这是构建工具发出的警告,有两个原因。
1.插件之一是依靠Task而不是TaskProvider,我们无能为力。
2.您已经配置了任务的用法,因为它支持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'
的用法。如上替换。
更多信息,请访问Task Configuration Avoidance
答案 5 :(得分:4)
答案 6 :(得分:3)
从类路径'com.android.tools.build:gradle:3.3.0-alpha13'返回到类路径'com.android.tools.build:gradle:3.2.0'
这对我有用
答案 7 :(得分:3)
1)将android.debug.obsoleteApi=true
添加到您的gradle.properties
中。它将显示警告日志影响哪些模块。
2)更新这些不赞成使用的功能。
variant.javaCompile
至variant.javaCompileProvider
variant.javaCompile.destinationDir
至
variant.javaCompileProvider.get().destinationDir
答案 8 :(得分:2)
就我而言,我不得不注释掉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起,这是一个错误
答案 9 :(得分:2)
当插件检测到您正在使用不再受支持的API时,它现在可以提供更多详细信息,以帮助您确定该API的使用位置。要查看其他信息,您需要在项目的gradle.properties文件中包括以下内容:
android.debug.obsoleteApi=true
答案 10 :(得分:2)
将gradle更新到 gradle:3.3.0
默认的“汇编”任务仅适用于普通变体。还要添加测试变体。
android.testVariants.all { variant ->
tasks.getByName('assemble').dependsOn variant.getAssembleProvider()
}
也评论适用于织物
//apply plugin: 'io.fabric'
答案 11 :(得分:2)
将Fabric插件更新为项目级别gradle文件(而非应用程序级别)中的最新版本。就我而言,这条线解决了问题
classpath 'io.fabric.tools:gradle:1.25.4'
到
classpath 'io.fabric.tools:gradle:1.28.0'
答案 12 :(得分:1)
升级 Kotlin (插件和 stdLib )版本到1.3.1 解决了我的警告。通过用
替换现有的Kotlin版本来更新整个项目中的Kotlin版本。ext.kotlin_version = '1.3.1'
答案 13 :(得分:1)
将您的项目迁移到androidX。
依赖项已升级到androidX。因此,如果您想使用androidX内容migrate your project to androidX.
使用Android Studio中3.2和更高的,可以迅速迁移现有项目通过从菜单栏中选择重构>迁移到AndroidX使用AndroidX。
降级依赖关系可能会解决您的问题-但不推荐
答案 14 :(得分:1)
我也面临同样的问题。经过一段时间的搜索,我发现警告是由于使用了最新版本的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'
}
}
答案 15 :(得分:0)
在我的情况下,我关注了this。 摘要,在gradle应用程序级别:更改此内容:
variant.outputs.all { output ->
variant.assemble.doLast {
....
}
}
到
variant.outputs.all { output ->
variant.getAssembleProvider().configure() {
it.doLast {
....
}
}
答案 16 :(得分:0)
我遇到了同样的问题,它通过在build.gradle文件中定义kotlin gradle插件版本来解决。
更改此
jar
到
C:\Users\Desktop>jar
Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] f
iles ...
Options:
-c create new archive
-t list table of contents for archive
-x extract named (or all) files from archive
-u update existing archive
-v generate verbose output on standard output
-f specify archive file name
-m include manifest information from specified manifest file
-n perform Pack200 normalization after creating a new archive
-e specify application entry point for stand-alone application
bundled into an executable jar file
-0 store only; use no ZIP compression
-P preserve leading '/' (absolute path) and ".." (parent directory) compone
nts from file names
-M do not create a manifest file for the entries
-i generate index information for the specified jar files
-C change to the specified directory and include the following file
If any file is a directory then it is processed recursively.
The manifest file name, the archive file name and the entry point name are
specified in the same order as the 'm', 'f' and 'e' flags.
Example 1: to archive two class files into an archive called classes.jar:
jar cvf classes.jar Foo.class Bar.class
Example 2: use an existing manifest file 'mymanifest' and archive all the
files in the foo/ directory into 'classes.jar':
jar cvfm classes.jar mymanifest -C foo/ .
答案 17 :(得分:0)
在项目级别build.gradle
上升级google服务解决了我的问题。
升级后:
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
}
答案 18 :(得分:0)
这主要是由于过时的库。要手动检查新更新,您应该导航到
分析>“按名称运行检查”
那应该足够了。另一种选择是使用
运行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]
...
答案 19 :(得分:0)
将protobuf-gradle-plugin升级到版本0.8.10解决了我的问题。将现有的protobuf替换为
classpath 'gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.10'
答案 20 :(得分:0)
从build.gradle
更改您的Google服务版本:
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
答案 21 :(得分:0)
这是一个受欢迎的问题。如果不使用这些方法,则解决方案将更新库。 请更新您的 kotlin版本,以及所有依赖项,例如 fabric , protobuf 等。如果您确定已更新所有内容,请尝试询问图书馆的作者。
答案 22 :(得分:0)
这解决了我的问题。.我要做的就是按照以下方式将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'
}
}
答案 23 :(得分:0)
保持项目(不是应用程序)Build.gradle的依赖关系classpath版本代码是新的
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
}
答案 24 :(得分:0)
这是一个临时解决方法,如果您正在使用房间,只需升级到1.1.0或更高版本
implementation "android.arch.persistence.room:runtime:1.1.0"
它为我删除了此警告。
答案 25 :(得分:0)
就我而言
build.gradle(Project)
是
ext.kotlin_version = '1.2.71'
更新为
ext.kotlin_version = '1.3.0'
看起来问题已经解决
答案 26 :(得分:0)
降级Gradle的版本对我有用:
classpath 'com.android.tools.build:gradle:3.2.0'