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

Phi*_*kiy 29 android unit-testing gradle kotlin junit5

我有一个gradle FAILURE:

..."Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0."
Run Code Online (Sandbox Code Playgroud)

案例描述:

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

APP/biuld.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"
Run Code Online (Sandbox Code Playgroud)
  • 更新了gradle-wrapper.properties

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

  • 毕竟那个gradle成功了

  • 创造了测试calss

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 运行测试并收到FAILURE消息. 在此输入图像描述

  • 使用命令行参数运行Gradle构建,./gradlew --warning-mode=all以查看已弃用的功能究竟是什么. 在此输入图像描述

结果我无法构建应用程序,我有失败的消息.

Kev*_*ain 53

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

./gradlew build --warning-mode all
Run Code Online (Sandbox Code Playgroud)

当您执行此操作时,您将在 logcat 中显示发现已弃用的内容或项目中的问题,对我来说,这是jcenter()需要在我的文件中删除的存储库settings.gradle,并且我还需要在我的项目文件中classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"更新。classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"build.gradle

完成这些操作后,我的项目完美构建并安装在我的模拟器上


Mas*_*lah 51

试试这个

cd android && ./gradlew clean && ./gradlew :app:bundleRelease
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,您能解释一下为什么这个 ./gradlew :app:bundleRelease 有效,而这个 ./gradlew bundleRelease 不起作用。 (4认同)
  • @AtikurRahmanSabuj 这取决于 ./gradlew 文件的编写方式。由于android中的默认模块是“app”,并且android应用程序可以有多个模块。另外 ./gradlew 仅应在清洁后工作。要查看 gradlew 中的所有任务,请执行“./gradlewtasks”,它将告诉您 gradlew 中的可用任务。 (3认同)

小智 43

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

cd android
./gradlew -v
Run Code Online (Sandbox Code Playgroud)

就我而言,它是 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 天头痛如何解决这个问题。太感谢了。 (8认同)

hot*_*key 34

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

它将为您提供有关已发现问题的详细说明以及Gradle文档的链接,以获取有关如何修复构建的说明.

  • 对 React-Native 使用 `npx react-native run-android -- --warning-mode=all` (26认同)
  • 这怎么是正确答案?! (9认同)
  • 尝试运行`gradle build --warning-mode = all` (5认同)
  • @JordanDaniels 我应该在 Android Studio 终端中的哪里添加该命令?当我在那里写时,我得到:“gradle”不被识别为内部或外部命令、可操作程序或批处理文件。 (5认同)
  • 当运行`react-native run-android --warning-mode all`时,我得到`error:unknown option --warning-mode' (4认同)
  • @Hassa如果您使用的是Windows,您可以在任务栏中搜索并在命令提示符中输入“cmd”。然后导航到您的项目目录。例如 C:\Users\您的计算机名称\我的项目文件夹\我的项目名称。输入 gradlew build --warning-mode=all 并按 Enter 键 (2认同)

chi*_*tte 16

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

  • 这是经过数小时的搜索和尝试后的正确答案 (3认同)
  • 正确答案... (2认同)

Mou*_*mit 8

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

dependencies {
        classpath("com.android.tools.build:gradle:3.6.3") 
    }
Run Code Online (Sandbox Code Playgroud)


ver*_*nar 8

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

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

defaultConfig {
  applicationId "com.peoplesenergyapp"
  minSdkVersion rootProject.ext.minSdkVersion
  targetSdkVersion rootProject.ext.targetSdkVersion
  versionCode 1
  versionName "1.0"
  multiDexEnabled true // <-add this 
}
Run Code Online (Sandbox Code Playgroud)


Goo*_*tan 7

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

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

react-native run-android warning-mode=all

如果你在下面运行,那么你会在终端中得到错误当运行 react-native run-android --warning-mode all 我得到错误:unknown option --warning-mode'


小智 6

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

classpath "com.android.tools.build:gradle:3.6.0" to
classpath "com.android.tools.build:gradle:4.0.1"
Run Code Online (Sandbox Code Playgroud)


Fot*_*ris 6

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

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


Hir*_*ren 5

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


Ner*_*ona 5

在本期的 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 ....

我这样做了: