Android Studio升级gradle:3.1.2后android.enableAapt2配置报错求助
解决Gradle 3.1.2启用Aapt2后的编译报错问题
嘿,我碰到过不少开发者在升级Gradle到3.1.2后踩这个Aapt2的坑,给你整理几个靠谱的解决思路:
1. 先排查资源文件的“小毛病”
Aapt2对资源的校验比旧版严格太多,很多之前能蒙混过关的问题现在直接触发报错:
- 所有资源文件名必须只包含小写字母、数字、下划线和点,大写字母、空格、中文或者特殊符号(比如
!、@)都是雷区,比如MyIcon.png得改成my_icon.png - 检查XML资源的语法:有没有未闭合的标签?属性值有没有漏加引号?是不是引用了不存在的资源ID?
- 看看图片资源有没有损坏:比如png/jpg文件本身打不开,或者VectorDrawable的XML代码有语法错误
2. 清理缓存后重新构建
有时候Android Studio的缓存会抽风,旧缓存和新Aapt2不兼容,执行这几步试试:
- 点击顶部菜单栏的
Build→Clean Project - 接着点击
Build→Rebuild Project - 如果还不行,手动删掉项目根目录的
.gradle文件夹和app/build文件夹,然后点击右上角的Sync Project with Gradle Files重新同步
3. 调整Gradle配置适配Aapt2
如果上面的方法没用,试试这些配置调整:
- 在项目根目录的
gradle.properties里,除了保留android.enableAapt2=true,再加一行:
关闭构建缓存可以避免缓存里的旧资源干扰新构建android.enableBuildCache=false - 检查
app/build.gradle里的compileSdkVersion和targetSdkVersion,Gradle 3.1.2建议搭配27及以上版本,版本不匹配也可能导致Aapt2报错 - 看看你用的第三方库有没有适配Aapt2,旧库的资源可能不符合新规范,尽量把第三方库更新到最新版本
4. 临时降级Gradle插件(迫不得已才用)
如果实在搞不定,可以暂时降级回之前能正常工作的Gradle版本,比如3.0.1:
修改项目根目录 build.gradle 里的插件版本:
dependencies { classpath 'com.android.tools.build:gradle:3.0.1' }
不过这只是缓兵之计,官方已经明确说会在2018年底彻底移除旧的Aapt工具,所以还是优先尝试前面的方法适配Aapt2。
内容的提问来源于stack exchange,提问作者Burhan
相关产品推荐
相关产品推荐

