fix bug
This commit is contained in:
@@ -9,7 +9,8 @@
|
|||||||
"Bash(flutter run:*)",
|
"Bash(flutter run:*)",
|
||||||
"Bash(timeout:*)",
|
"Bash(timeout:*)",
|
||||||
"Bash(nul)",
|
"Bash(nul)",
|
||||||
"Bash(start \"\" \"f:\\cursor-auto\\focusBuddy\\icon-preview.html\")"
|
"Bash(start \"\" \"f:\\cursor-auto\\focusBuddy\\icon-preview.html\")",
|
||||||
|
"Bash(dir:*)"
|
||||||
],
|
],
|
||||||
"deny": [],
|
"deny": [],
|
||||||
"ask": []
|
"ask": []
|
||||||
|
|||||||
140
ANDROID_BUILD_FIX.md
Normal file
140
ANDROID_BUILD_FIX.md
Normal file
@@ -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 <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 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 构建现在应该可以正常工作
|
||||||
@@ -13,6 +13,7 @@ android {
|
|||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
isCoreLibraryDesugaringEnabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
@@ -42,3 +43,7 @@ android {
|
|||||||
flutter {
|
flutter {
|
||||||
source = "../.."
|
source = "../.."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user