Flutter添加依赖包后Android运行失败问题求助
问题描述
无依赖/无包状态下Flutter项目Android端运行正常,但添加任意依赖包后编译报错,核心错误信息如下:
Launching lib\main.dart on moto g34 5G in debug mode... Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':shared_preferences_android:compileDebugJavaWithJavac'. > Could not resolve all files for configuration ':shared_preferences_android:androidJdkImage'. > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for JdkImageTransform: C:\Users\Kannan\AppData\Local\Android\sdk\platforms\android-34\core-for-system-modules.jar. > Error while executing process C:\Program Files\Android\Android Studio\jbr\bin\jlink.exe with arguments {--module-path C:\Users\Kannan\.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\temp\jmod --add-modules java.base --output C:\Users\Kannan\.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\jdkImage --disable-plugin system-modules}
已尝试flutter clean、flutter upgrade、flutter pub get无效,Windows平台运行正常。
解决方案
统一Android Studio与SDK命令行工具版本
打开Android Studio,进入Settings > Appearance & Behavior > System Settings > Android SDK > SDK Tools,勾选Android SDK Command-line Tools (latest)并更新,确保命令行工具与Android Studio版本一致,解决SDK XML版本不兼容的警告。指定Gradle使用Android Studio自带JDK
打开项目android/gradle.properties文件,添加或修改以下配置:org.gradle.java.home=C:\\Program Files\\Android\\Android Studio\\jbr或通过Android Studio设置:
File > Project Structure > SDK Location > JDK Location,选择Android Studio自带的JetBrains Runtime(JBR),避免系统JDK版本不匹配导致的jlink执行错误。清理Gradle缓存并重建
手动删除C:\Users\Kannan\.gradle\caches目录,然后依次执行:flutter clean flutter pub get完成后重新运行项目。
临时降低Android SDK编译版本
打开android/app/build.gradle文件,修改compileSdkVersion和targetSdkVersion为33(若当前为34):android { compileSdkVersion 33 defaultConfig { targetSdkVersion 33 // 其他默认配置保持不变 } }同步Gradle后重新编译运行。
验证依赖包兼容性
确认添加的依赖包支持当前Flutter版本及Android SDK版本,可查看pub.dev上对应依赖的文档说明,排除依赖版本不兼容问题。
内容的提问来源于stack exchange,提问作者Programming _ പൂച്ച

