此构建中使用了已弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容

     2023-04-13     228

关键词:

【中文标题】此构建中使用了已弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容【英文标题】:Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0 【发布时间】:2021-11-13 23:03:55 【问题描述】:

我的 gradle 失败:

..."Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0."

案例描述:

附加到项目代码库的下一个库:

APP/build.gradle

    //(Required) Writing and executing Unit Tests on the JUnit Platform 
testImplementation "org.junit.jupiter:junit-jupiter-api:5.2.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.2.0"
    // (Optional) If you need "Parameterized Tests"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.2.0"
    // (Optional) If you also have JUnit 4-based tests
testImplementation "junit:junit:4.12"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:5.2.0"

testImplementation "io.mockk:mockk:1.8.5"

更新了 gradle-wrapper.properties

distributionUrl=https....gradle-4.4-all.zip 到 4.7-all

在所有 gradle 构建成功之后

创建了测试类

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
  class TestClass 

  @Test
  internal fun testName() 
    Assert.assertEquals(2, 1 + 1)
  

运行测试并收到 FAILURE 消息。

使用命令行参数 ./gradlew --warning-mode=all 运行 Gradle 构建,以查看已弃用的功能到底是什么。

因此,我无法构建应用程序,并且收到了 FAILURE: 消息。

【问题讨论】:

这不是失败。该应用程序仍然可以编译,不是吗? 应用程序编译时出现相同的失败消息。 :-( 这不是失败。如果应用程序没有编译,那将是失败的。这充其量只是一个警告 @EpicPandaForce 不幸的是,正如我所提到的,这是一条失败消息。问题不在于如何解释信息,而是我对您的影响表示赞赏。 试试这个解决方案。只需添加一些代码。 ***.com/questions/54276381/… 【参考方案1】:

使用命令行参数 --warning-mode=all 运行 Gradle 构建,以查看已弃用的功能到底是什么。

它将通过指向 Gradle 文档的链接为您详细描述发现的问题,以获取如何修复您的构建的说明。

添加--stacktrace,如果它是由其中一个插件中的过时代码而不是您的构建脚本触发的,您还可以查明警告的来源。

【讨论】:

当运行react-native run-android --warning-mode all 我得到error: unknown option --warning-mode' 尝试运行gradle build --warning-mode=all @Led,由于多种原因,可能会出现弃用警告,从构建脚本中使用的弃用功能到过时的第三方 Gradle 插件或错误地调用弃用的 API。此答案提供了一种方法来查找导致弃用警告的确切原因,因此,了解这一点后,您可以搜索更具体问题的解决方案。 @JordanDaniels 我应该在哪里添加该命令,在 Android Studio 终端中?当我在那里写的时候,我得到:'gradle' 不是内部或外部命令、可运行程序或批处理文件。 npx react-native run-android -- --warning-mode=all 用于 React-Native【参考方案2】:

试试这个

cd android && ./gradlew clean && ./gradlew :app:bundleRelease

【讨论】:

谢谢,请您解释一下为什么这个 ./gradlew :app:bundleRelease 有效而这个 ./gradlew bundleRelease 无效。 完美在我的 cordova-9.0 项目中为我工作:D @AtikurRahmanSabuj 这取决于 ./gradlew 文件的编写方式。由于android中的默认模块是“app”,android app可以有多个模块。 ./gradlew 也只能在清洁后工作。要查看 gradlew 中的所有任务,请执行“./gradlew tasks”,它将告诉您 gradlew 中的可用任务。 对于 Apache Cordova 和 Android 9,可以通过启用 AndroidX 来解决错误。要启用,请参阅:cordova.apache.org/announcements/2020/06/29/…【参考方案3】:

我收到了这个错误。事实证明,只有在我完全清理 RN 缓存(相当复杂的过程)然后创建发布版本时才会发生这种情况。

如果我清理了缓存,创建了一个调试版本,然后是一个发布版本,一切正常。有点担心,但有效。

注意:我的清理命令是...

rm -r android/build ; rm -r android/app/src/release/res ; rm -r android/app/build/intermediates ; watchman watch-del-all ; rm -rf $TMPDIR/react-* ; npm start -- --reset-cache

【讨论】:

这是经过数小时搜索和尝试后的正确答案 在我更新了一些其他依赖项之后也为我工作。【参考方案4】:

以下过程适用于我的案例- 首先检查 Gradle 版本:

cd android
./gradlew -v

在我的例子中是 6.5

转到https://developer.android.com/studio/releases/gradle-plugin,您将获得 gradle 版本的插件版本。对于 gradle 版本 6.5,插件版本为 4.1.0

然后去app/build.gradleclasspath 'com.android.tools.build:gradle:<plugin_version>

【讨论】:

您只需将我从 3 天的头痛中解脱出来,弄清楚如何解决这个问题。谢谢一百万。 对于我的情况 Gradle 7.2 which plugin 7.0 但它不起作用。【参考方案5】:

我的项目与 Gradle 8.0 不兼容。这对我有用: 首先我在Android Studio终端中写了这行代码:

./gradlew build --warning-mode all

当您这样做时,您将在 logcat 中显示发现已弃用的内容或项目中的问题,对我而言,需要在我的 settings.gradle 文件中删除 jcenter() 存储库以及我需要在我的build.gradle 项目文件中将classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21" 更新为classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"

一旦我做了这些事情,我的项目就完美构建并安装在我的模拟器上

【讨论】:

我编辑了 settings.gradle 并删除了 jcenter 并且警告消失了。 我是新手,我根本不知道如何运行所有使用警告模式的建议。当我最初阅读您的答案时,我被卡住了,但我重新阅读并在开始时看到您在 Android Studio 终端中所说的内容。我试过了,我也同样弃用了 jcenter()。我删除了,警告消失了。重要提示:完成此操作后,您必须将应用程序项目与 Gradle 文件重新同步,否则应用程序不会安装在模拟器或物理设备上。【参考方案6】:

在我的情况下,我更新了build.gradle 文件并将classpath 更新为从3.5.23.6.3 的最新版本

dependencies 
        classpath("com.android.tools.build:gradle:3.6.3") 
    

【讨论】:

【参考方案7】:

重要提示 - 回答仅适用于 REACT-NATIVE VS CODE 终端

在 VisualStudio 代码中,您必须像下面这样运行,然后该警告将被忽略。

react-native run-android warning-mode=all

如果您在下面运行,那么您将在终端中收到错误 当运行 react-native run-android --warning-mode all 我得到错误:未知选项 --warning-mode'

【讨论】:

【参考方案8】:

在我的例子中,在 Android/app/build.gradle 文件中添加 multiDexEnabled true 编译了文件。

我会考虑在未来删除它,就像在 documentation 中所说的“在配置您的应用以启用 64K 或更多方法引用之前,您应该采取措施减少您调用的引用总数应用代码,包括由您的应用代码或包含的库定义的方法。'

defaultConfig 
  applicationId "com.peoplesenergyapp"
  minSdkVersion rootProject.ext.minSdkVersion
  targetSdkVersion rootProject.ext.targetSdkVersion
  versionCode 1
  versionName "1.0"
  multiDexEnabled true // <-add this 

【讨论】:

"如果您的应用仅针对 Android 21 或更高版本 (minSdkVersion),则默认情况下已启用 multidex,您不需要 multidex 支持库。但是,如果您的 minSdkVersion 设置为 20 或更低,那么你必须使用 multidex 支持库”。 Source from Flutter【参考方案9】:

以下解决方案对我有帮助,因为我也收到了同样的警告。 在你的项目级 gradle 文件中,尝试更改 classpath 中的 gradle 版本

classpath "com.android.tools.build:gradle:3.6.0" to
classpath "com.android.tools.build:gradle:4.0.1"

【讨论】:

在这里尝试了所有其他过程后,它对我有用。它节省了我的一天。谢谢 已经为这个错误苦苦挣扎了 2 个小时。这个答案为我节省了很多浪费的时间。【参考方案10】:

更新您的第三方依赖项。 例如我更新了依赖 implementation 'com.github.ybq:Android-SpinKit:1.1.0'implementation 'com.github.ybq:Android-SpinKit:1.2.0'。就我而言,问题已经解决了。

【讨论】:

按照热键的建议进行准确的详细描述 这是个错误,我正在升级 gradle 版本并尝试所有可能的步骤。 :(【参考方案11】:

在 react-native 项目中,它在这个问题上对我有用:

此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。

244 个可操作的任务:2 个已执行,242 个是最新的 D8:无法在单个 dex 文件中容纳请求的类(# 字段:67296 > 65536) com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错: .dex 文件中的方法引用数不能超过 64K。 在https://developer.android.com/tools/building/multidex.html 了解如何解决此问题 ....

我这样做了:

从我的设备上卸载应用程序:

The number of method references in a .dex file cannot exceed 64k API 17

【讨论】:

感谢分享。几乎花了50分钟。只是从设备上卸载应用程序就为我完成了这项工作。【参考方案12】:

将gradle-wrapper-properties文件中的distributionUrl路径设置为:

distributionUrl=https://services.gradle.org/distributions/gradle-4.10.2-all.zip

【讨论】:

我的 gradle 有这一行..distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip 将其更改为并且可以正常工作。 distributionUrl=services.gradle.org/distributions/gradle-4.10.2-all.zip【参考方案13】:

最终决定将junit 5降级为junit 4,重新构建测试环境。

【讨论】:

你是怎么做到的? Pratik 请记住,现在,六个月后,我想围绕这个问题的情况发生了变化。如果 JUnit 5 可以方便地用作测试工具,我建议您从头开始调查。【参考方案14】:

问题的解决方案: 此版本中使用了弃用的 gradle 功能,使其与 gradle 6.0 不兼容。安卓工作室 这个提供的解决方案对我有用。

首先在你的项目的 build.gradle 的依赖中更改类路径 来自:classpath 'com.android.tools.build:gradle:3.3.1' 收件人:classpath 'com.android.tools.build:gradle:3.6.1'

然后在 gradle-wrapper.properties 文件中进行更改,该文件存在于项目的 gradle>wrapper 文件夹中 来自:distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 收件人:distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

然后同步你的 gradle。

【讨论】:

【参考方案15】:

从设备/模拟器中卸载旧应用。它对我有用

【讨论】:

【参考方案16】:

我正在使用 react-native,这对我有用:

    在项目的根目录cd androidgradlew clean 在 Windows 中打开任务管理器 在两个 java.exe 进程上的“详细信息”选项卡上点击结束任务

长话短说 &gt; Task :app:installDebug FAILEDkiling java.exe prossess修复

【讨论】:

【参考方案17】:

在使用 IntelliJ 和 Gradle 的 SpringBoot 项目中,我在运行集成测试时收到警告“此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容”。 解决问题的是: - 前往:文件 > 设置 > 构建、执行、部署 - 选择“使用构建和运行”:Intellij IDEA(而不是“Gradle”) - 与“运行测试使用”相同 这并没有解释为什么 Gradle 会显示警告,但这让我可以在我的工作中执行测试和进展。

【讨论】:

【参考方案18】:

在我的情况下,从基本目录中删除整个 android 文件夹并允许它在 eas build 上重建所有文件夹,为我修复了这个错误 :)

【讨论】:

感谢为我节省了时间【参考方案19】:

这是由于不兼容。

请升级android文件夹下build.gradle文件中的classpath("com.android.tools.build:gradle:4.0.1")

【讨论】:

【参考方案20】:

我发现我的磁盘空间小于 4 GB,无法获取 Gradle lib repo 然后显示

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

只需删除 tmp 和垃圾文件,释放空间然后尝试构建并解决问题

【讨论】:

【参考方案21】:

检查 settings.gradle 脚本并从中删除 jcenter(),因为它可能会导致问题,因为它已被弃用。

你的新settings.gradle文件应该是

pluginManagement 
    repositories 
        gradlePluginPortal()
        google()
        mavenCentral()
    
    plugins 
        id 'com.android.application' version '7.1.0-alpha12'
        id 'com.android.library' version '7.1.0-alpha12'
        id 'org.jetbrains.kotlin.android' version '1.5.21'
    

dependencyResolutionManagement 
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories 
        google()
        mavenCentral()
    

rootProject.name = "ComposePlayground"
include ':app'

请注意,ComposePlayground 是应用名称。

【讨论】:

【参考方案22】:

我通过更新我的 gradle-wrapper.properties 文件解决了这个问题。您必须将此行 distributionUrl=https://services.gradle.org/distributions/gradle-7.3.3-bin.zip 更改为可以可以在The Gradle Wrapper找到。

希望能帮助到那里的人:)

【讨论】:

这个文件gradle-wrapper.properties在哪里【参考方案23】:

试试这个对我有用的解决方案。 如果您的设备上有另一个应用程序同名(或软件包名称):重命名该应用程序或从您的设备中删除它

【讨论】:

【参考方案24】:

implementation("org.slf4j:slf4j-nop:1.7.25") 添加到build.gradle.kts

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review【参考方案25】:

迁移到 AndroidX

后已修复此类错误 转到 重构 ---> 迁移到 AndroidX

【讨论】:

此构建中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。 - 反应原生

】此构建中使用了已弃用的Gradle功能,使其与Gradle6.0不兼容。-反应原生【英文标题】:DeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle6.0.-Reactnative【发布时间】:2020-07-1116:14:46【问题描述】:当我安装ReactNativeWebView时... 查看详情

“此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。” -反应原生

】“此版本中使用了已弃用的Gradle功能,使其与Gradle7.0不兼容。”-反应原生【英文标题】:"DeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle7.0."-REACT-NATIVE【发布时间】:2020-07-2018:25:53【问题描述】:当我尝试运... 查看详情

任务:app:mergeReleaseResources FAILED,此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容

】任务:app:mergeReleaseResourcesFAILED,此版本中使用了已弃用的Gradle功能,使其与Gradle7.0不兼容【英文标题】:Task:app:mergeReleaseResourcesFAILED,DeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle7.0【发布时间】:2021-04-2200:14:30【... 查看详情

“此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 8.0 不兼容。”在使用 FileWriter 类以 Java 输出文件时

】“此版本中使用了已弃用的Gradle功能,使其与Gradle8.0不兼容。”在使用FileWriter类以Java输出文件时【英文标题】:"DeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle8.0."whileusingFileWriterClasstooutputthefileinJava【发布时... 查看详情

React native Task :app:processDebugResources FAILED 在此构建中使用了弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容

】ReactnativeTask:app:processDebugResourcesFAILED在此构建中使用了弃用的Gradle功能,使其与Gradle7.0不兼容【英文标题】:ReactnativeTask:app:processDebugResourcesFAILEDDeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle7.0【发布时间】 查看详情

此版本中使用了弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容

】此版本中使用了弃用的Gradle功能,使其与Gradle5.0不兼容【英文标题】:DeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle5.0【发布时间】:2019-01-0716:12:30【问题描述】:我的gradle失败:..."DeprecatedGradlefeatureswereusedinthisbuil... 查看详情

应用程序构建成功但应用程序打开空白

】应用程序构建成功但应用程序打开空白【英文标题】:AppbuildSuccessfulbutAppopeninggoneblank【发布时间】:2021-09-0318:50:04【问题描述】:创建构建后显示以下错误消息。此版本中使用了已弃用的Gradle功能,使其与Gradle7.0不兼容。使... 查看详情

插件“XXXXX”使用了已弃用的 Android 嵌入版本

】插件“XXXXX”使用了已弃用的Android嵌入版本【英文标题】:Theplugins`XXXXX`useadeprecatedversionoftheAndroidembedding【发布时间】:2021-10-2511:01:42【问题描述】:我试图使用pubget来获取我的依赖项,但我不断收到一堆错误。我陷入了这些... 查看详情

警告:这些软件包使用了已弃用的“rnpm”配置并且节点不工作

】警告:这些软件包使用了已弃用的“rnpm”配置并且节点不工作【英文标题】:Warning:Thepackagesusedeprecated"rnpm"configandnodenotworking【发布时间】:2021-08-1421:47:10【问题描述】:我从github克隆了一个项目,使用yarn添加包运行... 查看详情

什么取代了已弃用的 PayPal 自适应支付 API

】什么取代了已弃用的PayPal自适应支付API【英文标题】:WhatreplacedthedeprecatedPayPalAdaptivepaymentsAPI【发布时间】:2022-01-1015:20:44【问题描述】:我和我的团队将PayPal自适应支付API集成到我们的网络应用程序中(允许用户提取资金,... 查看详情

插件 `advance_pdf_viewer` 使用了已弃用的 Android 版本,甚至添加了最新版本的 pubsec

】插件`advance_pdf_viewer`使用了已弃用的Android版本,甚至添加了最新版本的pubsec【英文标题】:Theplugin`advance_pdf_viewer`usesadeprecatedversionoftheAndroidembeddingevenlatestversionaddedpubsec【发布时间】:2021-10-0200:59:55【问题描述】:重要的是我... 查看详情

一些输入文件使用或覆盖已弃用的 API Flutter build android [关闭]

...11【问题描述】:我有一个颤振项目,我想在androidstudio中构建它。我在终端中使用此命令构建它:flutterbuildapk--release我收到 查看详情

Android LocationClient 类已弃用,但在文档中使用

】AndroidLocationClient类已弃用,但在文档中使用【英文标题】:AndroidLocationClientclassisdeprecatedbutusedindocumentation【发布时间】:2014-08-2800:24:51【问题描述】:如果我们查看LocationClient的文档,我们可以看到该类已被弃用。但documentation... 查看详情

已弃用的 OpenGL 功能

...栅位置。他们为什么将这些功能标记为已弃用?仍然可以使用它们吗?有什么解决办法?【问题讨论】:game 查看详情

ConnectivityManager.TYPE_WIFI 在代码中显示已弃用。我在 M 以上版本中使用了网络功能,想要删除已弃用的警告

...tivityManager.TYPE_WIFI在代码中显示已弃用。我在M以上版本中使用了网络功能,想要删除已弃用的警告【英文标题】:ConnectivityManager.TYPE_WIFIisshowingdeprecatedincode.IhaduseNetworkCapabilitiesinaboveMversion,wanttoremovewarningofdeprecated【发布时间】:2... 查看详情

TextToSpeech : API Level 21 中已弃用的说话功能

...间】:2015-08-2218:43:06【问题描述】:我尝试在我的应用中使用TextToSpeech,Stringtext=editText.getText().toString();tts.speak(text,TextToSpeech.QUEUE_F 查看详情

Alamofire 已弃用的代码

...描述】:场景:基于Alamofire的网络应用。我在最新的项目构建中遇到了不推荐使用的代码通知。我将其追溯到Alamofire中的以下语句。我没有看到任何关于替代品的提及。@available(*,deprecated=3.4.0)publicstaticfuncerrorWithCode( 查看详情

在 WCF 合同中标记已弃用的字段

...2,我想将一些字段标记为已弃用,因此客户端v1将看到并使用它们,而客户端v2将忽略它们。是否有针对此问题的最佳做法?我应该使用WCF中的任何现有属性吗?谢谢。【问题讨论】:【参考方案1】:您可以将旧属性装饰 查看详情