diff --git a/.claude/settings.local.json b/.claude/settings.local.json index b9f2bc4..5ae6323 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -9,7 +9,8 @@ "Bash(flutter run:*)", "Bash(timeout:*)", "Bash(nul)", - "Bash(start \"\" \"f:\\cursor-auto\\focusBuddy\\icon-preview.html\")" + "Bash(start \"\" \"f:\\cursor-auto\\focusBuddy\\icon-preview.html\")", + "Bash(dir:*)" ], "deny": [], "ask": [] diff --git a/ANDROID_BUILD_FIX.md b/ANDROID_BUILD_FIX.md new file mode 100644 index 0000000..0429708 --- /dev/null +++ b/ANDROID_BUILD_FIX.md @@ -0,0 +1,140 @@ +# 🔧 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` 中添加: + +```kotlin +compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + isCoreLibraryDesugaringEnabled = true // ✨ 新增 +} +``` + +### 2. 添加 desugaring 库依赖 + +在文件末尾添加: + +```kotlin +dependencies { + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") +} +``` + +--- + +## 📝 完整修改 + +### 修改前 +```kotlin +compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +flutter { + source = "../.." +} +``` + +### 修改后 +```kotlin +compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + isCoreLibraryDesugaringEnabled = true // ✨ 新增 +} + +flutter { + source = "../.." +} + +dependencies { // ✨ 新增 + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") +} +``` + +--- + +## 🧪 验证修复 + +运行以下命令测试: + +```bash +flutter clean +flutter build apk --debug +``` + +或直接运行: + +```bash +flutter run -d +``` + +--- + +## 📚 相关信息 + +### 什么是 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 Developer - Java 8+ Support](https://developer.android.com/studio/write/java8-support.html) +- [Core Library Desugaring Guide](https://developer.android.com/studio/write/java8-support#library-desugaring) + +--- + +**状态**: ✅ 已修复 +**文件**: `android/app/build.gradle.kts` +**影响**: Android 构建现在应该可以正常工作 diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 27bc332..d27925c 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -13,6 +13,7 @@ android { compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 + isCoreLibraryDesugaringEnabled = true } kotlinOptions { @@ -42,3 +43,7 @@ android { flutter { source = "../.." } + +dependencies { + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") +}