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 的新版本。


如果问题仍然存在,可以详细提供更多日志或上下文信息以便进一步诊断。

0
0

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1722 学习 · 870 问题

查看课程