ChatGPT解决这个技术问题 Extra ChatGPT

此构建中使用了已弃用的 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-all.zip 更新为 4.7-all

在所有的 gradle 都建立成功之后

创建了测试类 @TestInstance(TestInstance.Lifecycle.PER_CLASS) class TestClass { @Test internal fun testName() { Assert.assertEquals(2, 1 + 1) } }

运行测试并收到 FAILURE 消息。

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

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

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

h
hotkey

使用命令行参数 --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
M
Masum Billah

试试这个

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/…
它给了我 app-release.aab 文件,无法在我的手机中打开
S
Shafin Hasnat

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

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>


您只需将我从 3 天的头痛中解脱出来,以便弄清楚如何解决这个问题。太感谢了。
对于我的情况,Gradle 7.2 插件 7.0 但它不起作用。
c
chichilatte

我收到了这个错误。原来它只发生在我完全清理 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


这是经过数小时的搜索和尝试后的正确答案
在我更新了一些其他依赖项之后,也为我工作。
K
Kevin Germain

我的项目与 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 文件重新同步,否则应用程序不会安装在模拟器或物理设备上。
A
Avid Programmer

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

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

react-native run-android 警告模式=全部

如果您在下面运行,那么您将在终端中收到错误运行 react-native run-android --warning-mode all I get error: unknown option --warning-mode'


M
Moumit

就我而言,我更新了 build.gradle 文件并将 classpath 更新为从 3.5.23.6.3 的最新版本

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

q
questerstudios

在我的情况下,在 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
k
kk.

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

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

在这里尝试了所有其他过程后,它对我有用。它节省了我的一天。谢谢
小时以来一直在努力解决这个错误。这个答案为我节省了很多浪费的时间。
该文件和条目位于何处?
H
Hiren

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


按照热键的建议进行准确的详细描述
这是错误,我正在升级 gradle 版本并尝试每一个可能的步骤。 :(
N
NerioLorona

在 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 ...了解如何解决此问题。

我这样做了:

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

.dex 文件中方法引用的数量不能超过 64k API 17


感谢分享。几乎花了50分钟。只是从设备上卸载应用程序为我完成了这项工作。
G
Gautam Dev

将 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 将其更改为并且可以正常工作。分布网址=services.gradle.org/distributions/gradle-4.10.2-all.zip
P
Philipp Buhaievskiy

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


你是怎么做到的?
Pratik 请记住,现在,六个月后,我想围绕这个问题的情况发生了变化。如果 JUnit 5 方便用作测试工具,我建议您从头开始调查。
N
Nawab Singh Koli

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

首先更改项目 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。


c
cetric

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


f
faryar76

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

在项目 cd android 和 gradlew clean 的根目录中,在选项卡“详细信息”上的 Windows 中打开任务管理器,在 java.exe 进程上都命中了 endtask

长话短说> Task :app:installDebug FAILEDkiling java.exe prossess修复


s
sabrim

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


N
Ndatimana Gilbert

如果以上所有方法都不起作用,我正在使用 react-native 删除 Android 文件夹中的 Build 和 .gridle 文件夹并再次运行,这解决了我的问题


就我而言,我刚刚从文件夹 .gradle 中删除了自定义文件 gradle.propertiesinit.gradle
O
Omar D

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


d
dinobi

我发现我的磁盘空间小于 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 和垃圾文件,释放空间然后尝试构建并解决问题


S
Shep Sims

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


谢谢你为我节省了几个小时
A
Ahsan Raza Alvi

1)cd android 2) ./gradlew clean 3)./gradlew :app:bundleRelease

然后最后安装 npm install 命令


M
Manan Gadhiya

这是由于不兼容。

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


V
Vidyesh Churi

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


l
lungu

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

希望对那里的人有所帮助:)


此文件 gradle-wrapper.properties 位于何处
M
Moustaoui Salaheddine

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


z
zacker awali

在网上搜索了几个小时后,我在 vs code 上使用了这个命令 [react-native run-android warning-mode=all]。事实证明,该错误与不推荐使用的模块或任何 gradle 错误无关,只是我的设备已满存储空间,希望有一天能对某些人有所帮助。


F
Fotios Tsakiris

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

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


4
4b0

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
M
MoxJet

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅