Flutter集成shared_preferences后Android端调试失败求助
问题描述
开发Flutter Android应用时,安装shared_preferences: ^2.2.0(尚未使用)后,Chrome调试正常,但在三星Galaxy S10真机或Android Studio模拟器调试时抛出如下错误:
* What went wrong: Execution failed for task ':shared_preferences_android:parseDebugLocalResources'. > Could not resolve all files for configuration ':shared_preferences_android:androidApis'. > Failed to transform android.jar to match attributes {artifactType=android-platform-attr, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for PlatformAttrTransform: C:\Users\User\AppData\Local\Android\sdk\platforms\android-33\android.jar. > C:\Users\User\AppData\Local\Android\sdk\platforms\android-33\android.jar
已将compileSdkVersion和targetSdkVersion固定为34,执行过flutter clean && flutter pub get && flutter run无效,操作系统为Windows。
相关配置
android/app/build.gradle
def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { namespace "com.example.movie_night" compileSdkVersion 34 ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { applicationId "com.example.movie_night" minSdkVersion flutter.minSdkVersion targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } buildTypes { release { signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
pubspec.yaml
environment: sdk: '>=3.0.5 <4.0.0' dependencies: flutter: sdk: flutter uuid: ^3.0.6 provider: ^6.0.0 dio: ^5.3.1 flutter_launcher_icons: ^0.13.1 shared_preferences: ^2.2.0
解决方案
1. 修复Android 33 SDK平台文件
错误指向android-33/android.jar,大概率是该文件损坏或不完整:
- 打开Android Studio,进入
Tools > SDK Manager - 切换到
SDK Platforms标签,找到Android 13 (Tiramisu)(对应API 33) - 取消勾选后点击
Apply卸载,完成后重新勾选安装 - 安装完毕后执行
flutter clean && flutter pub get && flutter run
2. 强制所有模块统一使用API 34
shared_preferences_android可能默认依赖API 33,可在android/app/build.gradle的android块中添加配置,强制所有模块使用项目指定的compileSdk:
android { // 原有配置... compileSdkVersion 34 // 新增以下配置 configurations.all { resolutionStrategy { eachDependency { details -> if (details.requested.name == 'android') { details.useVersion '34' } } } } // 原有配置... }
3. 更新shared_preferences到最新版本
当前使用的2.2.0版本可能存在旧SDK依赖问题,尝试更新到最新稳定版:
- 修改pubspec.yaml中的依赖为
shared_preferences: ^2.2.2(或直接查看最新版本号) - 执行
flutter pub upgrade shared_preferences,再运行flutter clean && flutter run
4. 检查Gradle版本兼容性
确保Gradle版本适配API 34:
- 打开
android/build.gradle,将classpath版本调整为com.android.tools.build:gradle:7.4.2及以上 - 检查
gradle/wrapper/gradle-wrapper.properties中的distributionUrl,建议使用gradle-7.5-bin.zip或对应兼容版本
5. 清理缓存并重启
- 关闭Android Studio,删除以下目录:
C:\Users\User\.gradle\cachesC:\Users\User\AppData\Local\Google\AndroidStudio<版本号>\caches
- 重新打开Android Studio,执行
flutter clean && flutter pub get && flutter run
内容的提问来源于stack exchange,提问作者gaudiot
相关产品推荐
相关产品推荐

