Flutter Android构建报错:JVM目标版本不兼容及API废弃警告
Flutter Android构建失败:JVM版本不兼容及API废弃警告解决
一、修复JVM目标版本不兼容问题
报错核心是emoji_picker_flutter库的Java编译目标(1.8)与Kotlin编译目标(18)不匹配,统一两者版本即可解决:
全局统一JVM目标版本
在项目根目录的build.gradle(项目级)中,添加全局Kotlin编译配置,强制所有模块使用相同JVM目标:buildscript { ext.kotlin_version = '1.9.0' repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.4.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "1.8" } } }单独指定目标库的编译配置
若不想全局修改,可在应用级build.gradle中仅对emoji_picker_flutter设置JVM目标:android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } // 强制emoji_picker_flutter使用指定JVM目标 project(':emoji_picker_flutter').tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "1.8" } }
二、处理device_info_plus的API废弃警告
废弃警告源于库中使用了旧版Android API,可通过以下方式解决:
升级库到最新稳定版
在pubspec.yaml中更新device_info_plus版本:dependencies: device_info_plus: ^9.1.0 # 替换为当前最新稳定版本执行
flutter pub get后重新构建,新版本通常已替换废弃API。手动适配新API(无法升级时)
修改MethodCallHandlerImpl.kt中的废弃代码:- 用
Build.VERSION_CODES常量替代Build.VERSION.SDK_INT的硬编码判断 - 替换废弃的硬件信息获取方法,例如使用
PackageInfoCompat替代旧版PackageInfo的相关调用
- 用
内容的提问来源于stack exchange,提问作者ElCalvin_14
相关产品推荐
相关产品推荐

