2.9 KiB
2.9 KiB
🔧 Android 构建修复 - Core Library Desugaring
日期: 2025-11-22 问题: flutter_local_notifications 需要 core library desugaring
❌ 错误信息
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> An issue was found when checking AAR metadata:
1. Dependency ':flutter_local_notifications' requires core library desugaring to be enabled
for :app.
🔍 问题原因
flutter_local_notifications 包使用了 Java 8+ 的新 API(例如 java.time 包),这些 API 在较旧的 Android 版本上不可用。
Core library desugaring 允许应用使用这些新 API,同时保持对旧版 Android 的兼容性。
✅ 解决方案
修改 android/app/build.gradle.kts 文件:
1. 启用 desugaring
在 compileOptions 中添加:
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
isCoreLibraryDesugaringEnabled = true // ✨ 新增
}
2. 添加 desugaring 库依赖
在文件末尾添加:
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
}
📝 完整修改
修改前
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
flutter {
source = "../.."
}
修改后
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
isCoreLibraryDesugaringEnabled = true // ✨ 新增
}
flutter {
source = "../.."
}
dependencies { // ✨ 新增
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
}
🧪 验证修复
运行以下命令测试:
flutter clean
flutter build apk --debug
或直接运行:
flutter run -d <android-device>
📚 相关信息
什么是 Core Library Desugaring?
Desugaring 是一个过程,它将使用较新 Java API 的代码转换为在旧版 Android 上可运行的等效代码。
支持的 API
启用 desugaring 后,可以使用:
java.time.*(日期和时间 API)java.util.stream.*(Stream API)java.util.function.*(函数式接口)- 以及其他 Java 8+ 的核心库 API
版本说明
desugar_jdk_libs:2.0.4是当前稳定版本- 最低支持 Android API 21 (Android 5.0)
🔗 参考链接
状态: ✅ 已修复
文件: android/app/build.gradle.kts
影响: Android 构建现在应该可以正常工作