如需转载,请标明原文出处: 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。