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

时间:2018-07-31 09:47:22

标签: android unit-testing gradle kotlin junit5

我遇到了故障:

..."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-all

  • 在所有这些构建成功之后

  • 创建了测试成绩

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
  • 运行了测试并获得了FAILURE消息。 enter image description here

  • 使用命令行参数./gradlew --warning-mode=all运行Gradle构建,以查看确切不赞成使用的功能。 enter image description here

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

21 个答案:

答案 0 :(得分:15)

尝试这个

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

答案 1 :(得分:14)

使用命令行参数--warning-mode=all运行Gradle构建,以查看确切不赞成使用的功能。

它将通过Gradle文档的链接为您找到已发现的问题的详细说明,以指示如何修复构建。

答案 2 :(得分:8)

在我的情况下,在 Android/build/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 
}

答案 3 :(得分:7)

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

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

答案 4 :(得分:4)

我收到此错误。事实证明,只有当我完全清理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

答案 5 :(得分:2)

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

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

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

修正

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

以下过程适用于我的情况- 首先检查 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>

答案 8 :(得分:1)

解决方案: 此版本使用了不推荐使用的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。

答案 9 :(得分:1)

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

答案 10 :(得分:0)

迁移到AndroidX

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

我发现我的磁盘空间小于 4 GB 并且无法获取 Gradle lib 存储库 然后显示

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

答案 13 :(得分:0)

这是因为不兼容。

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

答案 14 :(得分:0)

此问题在本机的本机项目中对我有用:

在此版本中使用了不推荐使用的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了解如何解决此问题 ....

我这样做了:

答案 15 :(得分:0)

如果您使用的是 react-native ,请在运行项目之前先尝试以下命令:

  1. npm install --save-dev jetifier
  2. npx jetify

现在再次运行您的项目。希望这会起作用。

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

在使用IntelliJ和Gradle的SpringBoot项目中,运行集成测试时,出现警告“此构建中使用了不推荐的Gradle功能,使其与Gradle 5.0不兼容”。 解决问题的是: -转到:文件>设置>构建,执行,部署 -选择“使用以下语言进行构建和运行”:Intellij IDEA(而不是“ Gradle”) -与“使用...运行测试”相同 那并不能解释为什么Gradle显示警告,而是让我进行测试并进行工作。

答案 18 :(得分:0)

重要-仅适用于REACT-NATIVE VS CODE终端的答案工作

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

react-native run-android warning-mode = all

  

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

答案 19 :(得分:0)

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

答案 20 :(得分:0)

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