问题描述:
Flutter混合开发,在代码未发生任何变化的情况下,重新Flutter本地依赖,报如下错误。
A problem occurred evaluating settings 'AiTeacher'.
> Could not find method includeBuild() for arguments [/Users/yanjunhui/Library/flutter/packages/flutter_tools/gradle] on object of type org.gradle.plugin.management.internal.DefaultPluginManagementSpec.
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
...
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method includeBuild() for arguments [/Users/yanjunhui/Library/flutter/packages/flutter_tools/gradle] on object of type org.gradle.plugin.management.internal.DefaultPluginManagementSpec.
at org.gradle.internal.metaobject.AbstractDynamicObject$CustomMissingMethodExecutionFailed.<init>(AbstractDynamicObject.java:190)
at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:184)
at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:86)
at include_flutter$_run_closure2.doCall(include_flutter.groovy:31)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:105)
at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
at org.gradle.initialization.DefaultSettings.pluginManagement(DefaultSettings.java:319)
at org.gradle.initialization.DefaultSettings_Decorated.pluginManagement(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:134)
at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:163)
at org.gradle.groovy.scripts.BasicScript.invokeMethod(BasicScript.java:83)
at include_flutter.run(include_flutter.groovy:30)
at settings_2oj8v4nfyj4xpg1mfule98gaa.run(/Users/yanjunhui/android/AiTeacher/AiTeacher/settings.gradle:14)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
... 120 more
我就很费解了,以前明显依赖的好好的啊。看日志是Gralde报错了,那肯定又是Gradle作妖了。
显示Google、deepSeek一顿搜,根本没有正确的解决方案,连原因都没有。
后来我无意间发现了flutter项目中编译出来的flutterProject/.android/gradle 版本是不同的
flutter3.10.3下的是
image.png
flutter3.29.3下的是
image.png
也就是说,flutter版本升级,导致gradle版本也升级了。如果你源生Android项目不是8.0+的话,就会报这个错,真的是坑爹。但是AGP升级8.0+成本又很高,一时解决不掉怎么办?
退回去呗,还能怎么办。我试过了,直接替换gralde/wrapper也是行不通的。
Flutter 3.10.0(2023年5月发布)
首次支持 AGP 8.0,但默认仍使用 AGP 7.3.x(需手动升级)。
兼容 Android Studio Giraffe(2023.2+)和 JDK 17。
Flutter 3.13.0+(2023年9月后)
默认启用 AGP 8.0,新项目自动生成 AGP 8.0 配置。
要求 Android Gradle 8.0+ 和 Gradle 8.2+。