文章目录
一、 报错信息
二、 问题分析
三、 解决方案
一、 报错信息
Flutter 使用 image_picker 时 , 需要进行 AndroidX 兼容 , 设置了 Android 编译 SDK 和 目标 SDK 版本为 28 ;
image_picker 的 Android 设置要求在 AndroidManifest.xml 清单文件的 application 节点上添加 android:requestLegacyExternalStorage="true" 属性 ;
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:\002_WorkSpace\001_AS\flutter_photo\flutter_photo\android\app\src\main\AndroidManifest.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 版本以下不添加
android:requestLegacyExternalStorage="true"
配置 ;
这里属于画蛇添足了 , 该配置时 API 29 之后使用的 , 如果在之前的 API 版本使用 , 就会报上述错误 ;
三、 解决方案
鉴于当前的编译版本和目标版本都是 28 , 这里删除 AndroidManifest.xml 清单文件中的 android:requestLegacyExternalStorage="true" 配置 , 该问题解决 ; ( 测试成功 )
其它解决方案 : 将编译 SDK 版本提高到 29 以上 , 也可解决该问题 ;