【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )

2023-03-29 08:44:40 浏览数 (1)

文章目录

  • 一、 报错信息
  • 二、 问题分析
  • 三、 解决方案

一、 报错信息


Flutter 使用 image_picker 时 , 需要进行 AndroidX 兼容 , 设置了 Android 编译 SDK 和 目标 SDK 版本为 28 ;

image_picker 的 Android 设置要求在 AndroidManifest.xml 清单文件的 application 节点上添加 android:requestLegacyExternalStorage="true" 属性 ;

代码语言:javascript复制
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
     Y:02_WorkSpace01_ASflutter_photoflutter_photoandroidappsrcmainAndroidManifest.xml:9:5-31:19: AAPT: error: attribute android:requestLegacyExternalStorage 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.

* Get more help at https://help.gradle.org

BUILD FAILED in 3s
Exception: Gradle task assembleDebug failed with exit code 1

二、 问题分析


在 image_picker 插件的 Android 配置中导致上述问题 ;

【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 ) 四、Android 应用配置 配置 Android 工程时 , 要求 29 版本及以上才添加 , 29 版本以下不添加

代码语言:javascript复制
android:requestLegacyExternalStorage="true"

配置 ;

这里属于画蛇添足了 , 该配置时 API 29 之后使用的 , 如果在之前的 API 版本使用 , 就会报上述错误 ;

三、 解决方案


鉴于当前的编译版本和目标版本都是 28 , 这里删除 AndroidManifest.xml 清单文件中的 android:requestLegacyExternalStorage="true" 配置 , 该问题解决 ; ( 测试成功 )

其它解决方案 : 将编译 SDK 版本提高到 29 以上 , 也可解决该问题 ;

0 人点赞