Flutter ImagePicker 错误“找不到属性 android:requestLegacyExternalStorage”
Posted
技术标签:
【中文标题】Flutter ImagePicker 错误“找不到属性 android:requestLegacyExternalStorage”【英文标题】:Flutter ImagePicker error "attribute android:requestLegacyExternalStorage not found" 【发布时间】:2020-12-21 04:27:51 【问题描述】:我在我的颤振项目中使用image_picker。它说“API 将 android:requestLegacyExternalStorage="true" 作为属性添加到 AndroidManifest.xml 中的标记。在针对 Android Q 的应用上,该属性默认为 false。”
在build.gradle
中,在android
下有compileSdkVersion 28
,在defaultConfig
下有minSdkVersion 16
和targetSdkVersion 28
。我对此并不熟悉,但我认为这些符合API<29
条件。所以我添加了属性。
然后我的项目将不再编译,并出现错误提示“AAPT:错误:属性 android:requestLegacyExternalStorage 未找到。”如果我删除android:requestLegacyExternalStorage="true"
,它将编译。但是,由于它特别要求添加此属性,因此我想弄清楚这一点以避免任何潜在问题,例如在 ios 上因权限相关问题而被拒绝。
添加属性后,我的AndroidManifest.xml
看起来像:
我该怎么办?谢谢!
【问题讨论】:
"如果我删除 android:requestLegacyExternalStorage="true"" 就可以编译了,这意味着没有问题了吗? 是的,但它特别要求添加此属性。我想避免任何潜在问题,例如在 iOS 上因权限相关问题而被拒绝。 我猜它不会影响IOS,因为你添加了AndroidManifest.xml
。或许用IOS设备测试?
我的意思是避免出现类似于 iOS 上 App Store 被拒绝的问题。如果我不添加此属性,不确定谷歌会做什么。
将 android:requestLegacyExternalStorage="true" 添加到清单文件仅对 sdk 版本 29 有意义。对于运行 Android Q/10 的设备。那个文档是错误的。
【参考方案1】:
要解决这个问题,在“build.gradle (Project)”中,将“compileSdkVersion”、“buildToolsVersion”和“targetSdkVersion”设置为 29,如下所示:
buildToolsVersion = “29.0.0”
minSdkVersion = 21
compileSdkVersion = 29
targetSdkVersion = 29
supportLibVersion = “28.0.0”
【讨论】:
整个android文件夹中不存在buildToolsVersion以上是关于Flutter ImagePicker 错误“找不到属性 android:requestLegacyExternalStorage”的主要内容,如果未能解决你的问题,请参考以下文章
Flutter imagepicker.pickvideo 返回 jpg
Flutter & Navigator & ImagePicker : 为啥我可以进入下一页?查找已停用小部件的祖先是不安全的
Flutter Resize ImagePicker Image 在上传到firebase之前