Flutter sdk 更新到3.24.0后运行flutter run --release 报错
来源:1-2 课程导学

慕设计5218244
2024-08-20
Flutter sdk 更新到3.24.0后,执行flutter run 不会报错,执行flutter run --release报错,错误如下:
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':wifi_iot:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
> Android resource linking failed
ERROR:/Users/cshmac/Documents/flutter_ess_app/wan_xiang123_flutter/build/wifi_iot/intermediates/merged_res/release/values/values.xml:194: AAPT: error: resource android:attr/lStar not found.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':wifi_scan:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
> Android resource linking failed
ERROR:/Users/cshmac/Documents/flutter_ess_app/wan_xiang123_flutter/build/wifi_scan/intermediates/merged_res/release/values/values.xml:194: AAPT: error: resource android:attr/lStar not found.
1回答
-
CrazyCodeBoy
2024-08-21
这个问题通常是由于你的项目中某些依赖库使用了与当前 SDK 版本不兼容的 Android 资源,特别是在 Flutter 3.24.0 或更高版本中。这里的错误提示 `android:attr/lStar not found` 指向了 Android 资源问题,这个属性可能是在更高版本的 Android SDK 中引入的,而你当前的项目或依赖项并不完全支持。
### 解决方法:
#### 1. 检查 `compileSdkVersion`
确保你的 `android/app/build.gradle` 文件中的 `compileSdkVersion` 和 `targetSdkVersion` 设置为 33 或更高。如果低于这个版本,可能会导致某些新属性(如 `lStar`)无法解析。
```groovy
android {
compileSdkVersion 33
defaultConfig {
targetSdkVersion 33
}
}
```
#### 2. 更新依赖库
有时问题是由于某些库使用了过时的 Android 资源。你可以尝试更新这些库,尤其是 `wifi_iot` 和 `wifi_scan`,因为它们在错误日志中提到了。
你可以通过以下命令来更新所有依赖库:
```bash
flutter pub upgrade
```
#### 3. 使用兼容性处理
如果你无法更新 `compileSdkVersion`,或者库的更新并不能解决问题,你可以尝试在 `gradle.properties` 中添加以下代码,这有助于解决兼容性问题:
```properties
android.enableResourceOptimizations=false
```
#### 4. 检查 `android/app/src/main/res/values/values.xml`
检查是否在项目的 `values.xml` 文件中手动定义了 `lStar` 或其他相关资源属性,或者是否有冲突的资源定义。
#### 5. 清理和重建项目
有时旧的构建缓存会引起问题。你可以尝试清理项目并重新构建:
```bash
flutter clean
flutter pub get
flutter run --release
```
#### 6. 强制使用 Android SDK 工具链中的新版本
如果你的开发环境中使用了较旧版本的 Android SDK 工具链,你可以尝试更新你的 Android SDK 工具,并确保 Android Gradle 插件也更新到与 Flutter 3.24.0 兼容的版本。
### 其他建议
- **检查 Gradle 插件版本**:确保你使用的 Android Gradle 插件版本与 `compileSdkVersion` 和 `targetSdkVersion` 兼容。一般建议使用最新的稳定版本。
- **提交 Issue**:如果以上步骤都没有解决问题,可能需要向依赖库的维护者提交 Issue,以便他们更新库以支持 Flutter 3.24.0 和 Android SDK 的新版本。
如果问题仍然存在,可以详细提供更多日志或上下文信息以便进一步诊断。
00
相似问题