Flutter 3.19.5安卓端运行问题:是否需删除android文件夹?
问题根源
Flutter 3.16版本起,官方废弃了Gradle插件的命令式apply引用方式,改用声明式plugins块配置,但你的项目android目录仍在使用旧写法。同版本其他开发者能正常运行,大概率是他们的本地配置已适配新规则,或是仓库里的android配置存在版本差异。
分步解决方案
1. 替换android/build.gradle中的插件引用
找到文件中类似以下的命令式代码:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
替换为声明式plugins块:
plugins { id 'com.android.application' id 'kotlin-android' id 'dev.flutter.flutter-gradle-plugin' }
- 若项目有自定义的
apply from(比如第三方插件配置),可保留该语句,仅替换官方Flutter插件的引用方式。 - 所有自定义配置(如签名、buildTypes、productFlavors)无需改动,保留原位置即可。
2. 清理缓存并同步Gradle
执行以下命令清理本地缓存:
flutter clean cd android && ./gradlew clean build --refresh-dependencies
(Windows环境替换为gradlew.bat clean build --refresh-dependencies)
之后在Android Studio中点击「File -> Sync Project with Gradle Files」完成同步。
3. 对齐Gradle版本配置
检查android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl,确保和其他开发者使用的Gradle版本一致(比如https\://services.gradle.org/distributions/gradle-8.4-all.zip)。
同时确认android/build.gradle中的Gradle插件版本与Gradle版本匹配(例如Gradle 8.4对应插件版本com.android.tools.build:gradle:8.4.0)。
4. 验证本地Flutter环境
执行flutter doctor,确保Android SDK、NDK等依赖安装完整且无警告;再执行flutter pub get拉取最新依赖。
5. 对比其他开发者的配置
如果以上步骤无效,直接对比能正常运行的开发者的android/build.gradle和gradle-wrapper.properties文件,逐步调整差异点,保留自身的自定义配置。
内容的提问来源于stack exchange,提问作者Dilshad Ahmad

