Flutter升级SDK至3.5.0后编译APK遇Kotlin及资源错误
解决方案:Flutter 3.5.0 升级后 Kotlin/Gradle 及插件资源问题处理
一、Kotlin 版本兼容与 Gradle 新结构适配
- 统一项目 Kotlin 版本:找到项目根目录下的
build.gradle,将ext.kotlin_version修改为 1.8.0(与依赖的元数据版本保持一致,而非强行保留旧版1.6.0):buildscript { ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() } // 其他原有内容不变 } - 更新 Gradle 插件版本:在根目录
build.gradle的dependencies块中,将 Gradle 插件升级到适配 Kotlin 1.8.0 的版本(如7.4.2):dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 其他原有依赖不变 } - 执行
flutter clean后同步项目,再尝试构建。
二、签名密钥库文件缺失问题
- 检查路径正确性:打开
android/app/build.gradle,确认签名配置中的storeFile路径指向存在的密钥库文件:signingConfigs { release { keyAlias 'your-key-alias' keyPassword 'your-key-password' storeFile file('your-keystore-file.jks') // 确保文件存在且路径正确 storePassword 'your-store-password' } } - 丢失后的处理:
- 重新生成密钥库:执行命令
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key,将生成的key.jks放到android/app目录后更新配置。 - 临时测试构建:执行
flutter build apk --debug,或注释 release 签名配置,使用默认 debug 签名。
- 重新生成密钥库:执行命令
三、android:attr/lStar 资源未找到问题(flutter_beep/flutter_barcode_scanner)
该问题源于插件依赖的资源版本与项目 compileSdkVersion 不兼容,lStar 是 Android 12(API 31)新增属性。
- 升级项目 SDK 版本:修改
android/app/build.gradle中的配置:android { compileSdkVersion 33 // 至少升级到31,推荐使用33 defaultConfig { targetSdkVersion 33 // 其他原有配置不变 } } - 强制统一资源依赖版本:在
android/app/build.gradle的android块中添加:android { // 已有配置不变 configurations.all { resolutionStrategy { force 'androidx.core:core-ktx:1.9.0' force 'androidx.appcompat:appcompat:1.6.1' } } } - 清理缓存重建:执行
flutter clean,删除android/.gradle目录后,再执行flutter build apk。
内容的提问来源于stack exchange,提问作者Husamuldeen Abdlrahman
相关产品推荐
相关产品推荐

