在这个版本中使用了已弃用的Gradle特性,使得它与Gradle 5.0不兼容

我有一个gradle FAILURE:

..."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 -.zip到4.7 -

    .zip
  • 毕竟,gradle是建立成功的

  • 创建测试类

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
    class TestClass {
    
    
    @Test
    internal fun testName() {
    Assert.assertEquals(2, 1 + 1)
    }
    }
    
  • ran the test and got the FAILURE message. enter image description here

  • ran the Gradle build with a command line argument ./gradlew --warning-mode=all to see what exactly the deprecated features are. enter image description here

As a result I couldn't build the app and I've got that FAILURE: message.

695822 次浏览

使用命令行参数--warning-mode=all运行Gradle构建,以查看哪些特性被弃用。

它会给你一个详细的描述发现的问题与链接到Gradle文档指导如何修复你的构建。

在此基础上添加--stacktrace,如果警告是由某个插件中的过时代码而不是你的构建脚本触发的,你也将能够精确定位警告的来源。

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

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

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

更新您的第三方依赖项。我更新了依赖项 implementation 'com.github.ybq:Android-SpinKit:1.1.0'implementation 'com.github.ybq:Android-SpinKit:1.2.0'。在我的情况下,问题已经解决了

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

如果我清理了缓存,创建了调试版本,然后是发布版本,那么一切都可以正常工作。有点令人担忧,但有效。

注意:我的clean命令是…

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

重要-回答工作仅对REACT-NATIVE VS CODE终端

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

React-native run-android warning-mode=all

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

问题的解决方案: 在这个版本中使用了已弃用的gradle特性,使得它与gradle 6.0不兼容。android工作室

首先在build依赖项中更改类路径。Gradle你的项目 来自:classpath 'com.android.tools.build:gradle:3.3.1' : classpath 'com.android.tools.build:gradle:3.6.1' < / p > 然后在gradle-wrapper中进行更改。该文件存在于项目的gradle>包装器文件夹中 来自:distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip : distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip < / p >

然后同步你的gradle。

试试这个

cd android && ./gradlew clean && ./gradlew :app:bundleRelease
在一个使用IntelliJ和Gradle的SpringBoot项目中,当运行集成测试时,我得到了警告“在此构建中使用了Deprecated Gradle功能,使其与Gradle 5.0不兼容”。 解决问题的方法是: -转到:文件>设置>构建,执行,部署 选择“Build and run using”:Intellij IDEA(而不是“Gradle”) -“使用运行测试”相同 这并没有解释为什么Gradle显示警告,但这让我可以在我的工作中执行测试和进展

在我的情况下,我更新了build.gradle文件,并使classpath3.5.23.6.3的最新版本

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

迁移到AndroidX之后修复了这类错误

  • 迁移到AndroidX
下面的解决方案帮助了我,因为我也得到了同样的警告。 在你的项目级gradle文件中,尝试在类路径

中更改gradle版本
classpath "com.android.tools.build:gradle:3.6.0" to
classpath "com.android.tools.build:gradle:4.0.1"

在react-native的项目中,它为我在这个问题上工作:

在此版本中使用了已弃用的Gradle特性,使其与Gradle 7.0不兼容。

244个可操作任务:2个已执行,242个已更新 D8:无法将请求的类放入单个dex文件(# fields: 67296 >65536) 合并dex档案时出现错误: .dex文件中方法引用的个数不能超过64K。 在https://developer.android.com/tools/building/multidex.html中学习如何解决此问题 …< / p >

我是这样做的:

在我的情况下,在Android/app/build中添加multiDexEnabled true。Gradle文件编译文件。

我将考虑在未来删除这个,因为在文档中它说“在配置你的应用程序以允许使用64K或更多的方法引用之前,你应该采取措施减少应用程序代码调用的引用总数,包括应用程序代码定义的方法或包含的库。”

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

从设备/模拟器卸载旧的应用程序。这对我很有效

我正在使用react-native,这适用于我:

  1. 在项目cd androidgradlew clean的根目录下
  2. 在Windows中打开任务管理器
  3. 在tab 'Details'上点击java.exe进程的endtask
长话短说 > Task :app:installDebug FAILEDkiling java.exe prossess

修复

这是由于不相容。

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

下面的过程在我的情况下有效- 首先检查Gradle Version:

cd android
./gradlew -v

我的情况是6.5

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

然后转到app/build.gradle并更改classpath 'com.android.tools.build:gradle:<plugin_version>

我发现我的磁盘空间小于4 GB,无法获得Gradle lib repo 然后告诉< / p >

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和垃圾文件,释放空间,然后尝试构建和解决问题

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

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

检查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是应用程序名称。

我的项目与Gradle 8.0不兼容。以下是对我有效的方法: 首先,我在Android Studio终端上写了这行代码:

./gradlew build --warning-mode all

当你这样做的时候,你会在日志猫中显示你的项目中发现了什么已弃用或问题,对我来说,它是jcenter()存储库,需要在我的settings.gradle文件中删除,而且我需要在我的build.gradle项目文件中将classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"更新为classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"

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

我通过更新我的gradle-wrapper解决了这个问题。属性文件。你必须将这一行< >强distributionUrl = https://services.gradle.org/distributions/gradle-7.3.3-bin.zip < / >强更改为可以在Gradle包装器中找到的后期gradle构建。

希望这能帮助到一些人:)

试一下这个办法对我有用。< br > 如果你在设备上有同名的另一个应用程序(或包名):重命名应用程序或从你的设备上删除它.

通过删除/android中的.gradle文件夹并再次运行npm run android来解决这个问题,它解决了这个错误。 下面是问题的链接:https://github.com/facebook/react-native/issues/28954

< p > 1) cd android 2) ./gradlew干净 3)。/ gradlew:应用:bundleRelease < / p >

然后最后安装NPM安装命令

我使用react-native如果以上都不工作,删除Android文件夹内的构建.gridle文件夹并再次运行,这解决了我的问题

对我来说,问题是我的设备内部存储空间用完了。在删除了一些不必要的应用程序后,它运行正常。

在网上搜索了几个小时后,我在vs code上使用了这个命令[react-native run-android warning-mode=all]。 事实证明,这个错误与已弃用的模块或任何gradle错误无关,它只是我的设备存储空间太满了,

转到gradle/wrapper/gradle-wrapper.properties,将distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip更改为所需的版本(或更高版本)。

然后再次运行cd android && ./gradlew bundleRelease

以上答案对我都不起作用后,我设法通过将Gradle插件升级到最新版本并使用JDK 11来解决这个问题。 希望这能帮助到一些人!< / p >