在 Flutter 项目中更新 Gradle

Posted

技术标签:

【中文标题】在 Flutter 项目中更新 Gradle【英文标题】:Update Gradle in Flutter project 【发布时间】:2021-06-29 09:46:59 【问题描述】:

我在 Flutter 中有这个项目,但由于 Gradle 版本,我已经有几周无法构建 apk 了。我已经尝试了所有方法,但 Flutter 总是返回以下错误:

我已经安装了我找到的每个更新,尽管它显示 Gradle 版本是 4.10.2。

颤振构建 apk
...
FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\israel.gomes\AppData\Local\Pub\Cache\hosted\pub.dartlang.org\audioplayers-0.17.4\android\build.gradle' line: 25

* What went wrong:
A problem occurred evaluating root project 'audioplayers'.
> Failed to apply plugin [id 'kotlin-android']
   > The current Gradle version 4.10.2 is not compatible with the Kotlin Gradle plugin. Please use Gradle 5.3 or newer, or the previous version of the Kotlin plugin.

* Try:
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.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s


The plugin audioplayers could not be built due to the issue above.

这里有一些关于项目状态和环境的信息--------- p>

已更改gradle-wrapper.properties(当前文件):
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip
android/build.gradle(当前文件):
buildscript 
    ext.kotlin_version = '1.3.50'
    repositories 
        google()
        jcenter()
    

    dependencies 
        classpath 'com.android.tools.build:gradle:4.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    

.
.
.
gradle --version
------------------------------------------------------------
Gradle 5.6.2
------------------------------------------------------------

Build time:   2019-09-05 16:13:54 UTC
Revision:     55a5e53d855db8fc7b0e494412fc624051a8e781

Kotlin:       1.3.41
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM:          1.8.0_261 (Oracle Corporation 25.261-b12)
OS:           Windows 10 10.0 amd64

颤振医生-v
[√] Flutter (Channel dev, 2.1.0-12.1.pre, on Microsoft Windows [versão 10.0.19042.867], locale pt-BR)
    • Flutter version 2.1.0-12.1.pre at C:\Flutter
    • Framework revision 8264cb3e8a (3 weeks ago), 2021-03-10 12:37:57 -0800
    • Engine revision 711ab3fda0
    • Dart version 2.13.0 (build 2.13.0-116.0.dev)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at C:\Users\israel.gomes\AppData\Local\Android\Sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = C:\Users\israel.gomes\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] IntelliJ IDEA Community Edition (version 2020.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.3
    • Flutter plugin version 55.0.4
    • Dart plugin version 203.7759

[√] VS Code (version 1.54.3)
    • VS Code at C:\Users\israel.gomes\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.20.0

[√] Connected device (3 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 7.1.1 (API 25) (emulator)
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome 89.0.4389.114
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge 87.0.664.75

• No issues found!

【问题讨论】:

【参考方案1】:

这是我在旧的 Flutter 项目中升级 gradle 的方法:

    使用最新版本的 Flutter 创建一个新的临时项目。您将使用它来查看当前使用的 gradle Flutter 版本。

    在临时项目中打开 android/build.gradle 检查正在使用的 gradle 的类路径版本,并在旧的 Flutter 项目中更新它。今天对我来说是这样的:

    classpath 'com.android.tools.build:gradle:4.1.0'
    

    在临时项目中打开 android/gradle/wrapper/gradle-wrapper.properties 并检查distributionUrl。更新您的旧项目以使用相同的项目。今天对我来说是这样的:

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

    重新运行您的应用。它必须将新版本的 gradle 下载到 android/.gradle 目录,所以第一次可能需要一段时间。

【讨论】:

这对我有用,还需要将我的compileSdkVersion 28 升级到compileSdkVersion 31 你能更新今天的版本吗? - @Suragch @No.The.Hi,将我在答案中使用的版本号视为纯粹的示例。即使我今天更新它们,它们明天也会过时。按照上面列出的步骤是为自己获取最新版本号的方法。 使用 com.android.tools.build:gradle:4.2.2 避免最近出现的广告问题。【参考方案2】:

似乎audioplayers 的 gradle 版本与您的项目不兼容。

尝试将audioplayers 升级到最新版本although this may not fix the issue, as the last comment in this thread was less than 24 hours ago。

audioplayers: ^0.18.3

【讨论】:

是的...更新没有解决问题。我不得不为这个项目删除这个库。谢谢你注意到这个问题。我不知道!我会关注这个问题,看看是否有人可以解决这个问题。谢谢! 虽然这解决了手头的问题。但这不是问题的实际答案。所以这应该是一条评论 @HusseinAl-Mosawi OP 发布的隐含问题类似于“我的代码有什么问题,导致我无法在我的项目中更新 Gradle”。 *** 是一个问答网站,这让我的回答完全可以解决这个特定案例。如果您认为我的回答不符合 *** 指南,那么与其投反对票,不如将其标记并报告给模组?【参考方案3】:

(android/gradle/wrapper/gradle-wrapper.properties) distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-all.zip

(android/build.gradle) 类路径“com.android.tools.build:gradle:7.0.1”

在(gradle.properties) 添加这个: org.gradle.java.home=C:\Program Files\Android\Android Studio\jre

【讨论】:

【参考方案4】:

在 Flutter 项目中升级 gradle。 打开位于 yourProjectName/android/gradle/wrapper/gradle-wrapper.properties 的文件 gradle-wrapper.properties 并替换 distributionUrl通过更改 gradle 版本。例如,如果您想将 gradle 从版本 5.1.1 升级到 6.1.1,请将 Url 从“https://services.gradle.org/distributions/gradle-5.1.1-all.zip”更改为“https:// /services.gradle.org/distributions/gradle-6.1.1-all.zip" 并重建您的应用程序。

【讨论】:

【参考方案5】:

尝试重命名项目中的android/ 文件夹。然后在目录中运行flutter create .。这应该重新创建您的 android 目录。再次尝试您的构建,看看它是否解决了您的问题。

【讨论】:

以上是关于在 Flutter 项目中更新 Gradle的主要内容,如果未能解决你的问题,请参考以下文章

使用 showdialog 和 textfield 在 Flutter 中更新单个 Listview 项目

如何在项目中使用 firebase 和 firebase 功能的现有 Flutter 应用程序中更新包名称?

Flutter 在点击的索引处更新数据 onClick

将 Flutter 项目更新到 JAVA 11 后的问题

在 Flutter 中弹出屏幕后如何调用函数来更新值?

Flutter Getx - 更新子列表中的项目不是反应性的