问题解决:AAPT: error: attribute android:requestLegacyExternalStorage not found.

17,012 阅读1分钟

如需转载,请标明原文出处: https://juejin.cn/post/6850418117093523464 ,谢谢。

问题

最近碰到不少人问项目运行报错AAPT: error: attribute android:requestLegacyExternalStorage not found.的问题。

原因

尝试复现了一下,当项目build.gradle - compileSdkVersion配置的版本小于29,并且还在AndroidManifest.xml - application中配置了android:requestLegacyExternalStorage属性(不管是自己项目还是三方库配置了这个属性),就会导致这个问题的产生。
这个属性主要作用是因为Android 10.0的存储权限调整,Google推出的临时解决方案。
Google官方文档:管理分区外部存储访问 ·|· Android 开发者 ·|· Android Developers

解决

1. 删除android:requestLegacyExternalStorage属性

如果是自己项目配置的

直接在AndroidManifest.xml - application中删除android:requestLegacyExternalStorage属性。

如果是三方库配置的

在主项目的AndroidManifest.xml - application中添加tools:remove="android:requestLegacyExternalStorage"
原理主要是在清单文件合并时直接移除这个属性。
Google官方文档:合并多个清单文件 ·|· Android 开发者 ·|· Android Developers

2. 更改compileSdkVersion版本

更改build.gradle - compileSdkVersion版本大于等于29。