Flutter Android模拟器Debug构建失败问题求助
问题
为Android模拟器构建Flutter Debug版本时出现以下错误,iOS模拟器构建正常:
FAILURE: Build failed with an exception.
- What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.Could not resolve all dependencies for configuration ':app:debugCompileClasspath'.
Could not create task ':app:generateDebugLintModel'.
java.lang.NullPointerException (no error message)
执行flutter run --verbose时的核心错误信息:
'/Users/user/.pub-cache/hosted/pub.dev/webview_flutter_android-3.7.1/android/build.gradle'. [ ] All projects evaluated. [ ] Task name matched 'assembleDebug' [ ] Selected primary task 'assembleDebug' from project : [ ] FAILURE: Build failed with an exception. [ +1 ms] * What went wrong: [ ] Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. [ ] > Could not resolve all dependencies for configuration ':app:debugCompileClasspath'. [ ] > Could not create task ':app:generateDebugLintModel'. [ ] > java.lang.NullPointerException (no error message)
环境信息
[✓] Flutter (Channel stable, 3.10.3, on macOS 13.3.1 darwin-arm64, locale ja-JP) • Flutter version 3.10.3 on channel stable at /Users/user/development/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision f92f44110e (4 days ago), 2023-06-01 18:17:33 -0500 • Engine revision 2a3401c9bb • Dart version 3.0.3 • DevTools version 2.23.1 [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) • Android SDK at /Users/user/Library/Android/sdk • Platform android-33, build-tools 33.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 14.3.1) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 14E300c • CocoaPods version 1.12.1 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2021.3) • Android Studio at /Applications/Android Studio.app/Contents • 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 11.0.13+0-b1751.21-8125866) [✓] VS Code (version 1.73.0) • VS Code at /Users/user/Downloads/Visual Studio Code.app/Contents • Flutter extension version 3.60.0 [✓] Connected device (3 available) • sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64 • Android 12 (API 32) (emulator) • macOS (desktop) • macos • darwin-arm64 • macOS 13.3.1 darwin-arm64 • Chrome (web) • chrome • web-javascript • Google Chrome [✓] Network resources • All expected network resources are available. • No issues found!
已尝试的操作
- 执行
flutter clean - 执行
flutter pub cache repair - 通过
flutter pub outdated更新依赖版本 - 通过brew安装OpenJDK并配置环境变量:
brew install openjdk sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
解决方法
针对generateDebugLintModel任务的空指针异常,可尝试以下步骤:
禁用Lint模型生成
在项目的android/app/build.gradle文件中,添加以下配置到android块内:android { // 保留原有配置 lint { checkReleaseBuilds false generateLintModel false } }指定兼容的Gradle版本
打开项目根目录的android/gradle/wrapper/gradle-wrapper.properties文件,将Gradle版本指定为7.6(与Flutter 3.10.x兼容):distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip更新Android Gradle插件
在项目根目录的android/build.gradle文件中,匹配Gradle版本更新插件(Gradle 7.6对应插件7.4.2):buildscript { ext.kotlin_version = '1.8.20' repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.4.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }彻底清理后重新构建
执行以下命令清理缓存并重新构建:flutter clean rm -rf android/.gradle rm -rf ~/.gradle/caches flutter pub get flutter run检查WebView插件兼容性
错误日志指向webview_flutter_android-3.7.1,可尝试在pubspec.yaml中调整该插件版本(降级或升级),执行flutter pub get后重新构建。
内容的提问来源于stack exchange,提问作者sub

