Android Studio 3.1中AAPT2开关均异常的技术问题咨询
解决AAPT2启用后触发的构建错误问题
Hey,我太懂你这种升级后踩坑的感受了!之前禁用AAPT2是为了绕开一些旧问题,但AS3.1开始强制推进AAPT2,它比旧版AAPT严格得多,所以启用后就把之前被忽略的资源问题都揪出来了。下面是一步步解决的方法:
先把错误日志看明白
错误提示里说"check logs for details"可不是随便说说的,得先拿到具体的错误点才行:- 打开Android Studio底部的
Gradle Console标签,这里会输出完整的构建日志,里面会明确告诉你是哪个XML文件、哪个资源出了问题——比如标签没闭合、资源拼写错了、重复资源之类的。 - 如果Gradle Console的信息不够详细,就在项目根目录的终端里跑命令:
./gradlew assembleDebug --stacktrace(Windows系统用gradlew.bat assembleDebug --stacktrace),这条命令会输出更完整的错误堆栈,精准定位问题。
- 打开Android Studio底部的
针对性修复资源问题
AAPT2的严格检查通常会揪出这些常见坑:- XML语法错误:比如布局文件里某个
<TextView>标签没写</TextView>,或者属性名拼错(比如把android:layout_height写成android:layout_hight)。 - 重复资源:不同res目录(比如drawable和drawable-v21)里有同名的图片或字符串资源。
- 资源引用错误:引用了不存在的资源ID,或者Vector Drawable里用了AAPT2不兼容的属性。
- 资源文件名违规:AAPT2不允许文件名里有大写字母、特殊符号(除了下划线和连字符),比如
Icon_App.png得改成icon_app.png才行。
举个实际例子,如果日志里显示
error: resource string/app_name (aka com.your.package:string/app_name) not found,那你就去strings.xml里看看这个字符串是不是漏定义了,或者引用的时候拼错了名字。- XML语法错误:比如布局文件里某个
临时应急方案(不推荐长期用)
如果你现在赶时间,没时间一个个修复资源问题,虽然官方说android.enableAapt2=false会在2018年底彻底移除,但在AS3.1里暂时还能凑合用。不过真的不建议一直依赖这个方案——AAPT2能提升构建速度,还能提前发现资源问题,后续版本肯定会强制启用的,早修复早省心。额外小贴士
升级AS3.1的时候,记得把项目根目录build.gradle里的Gradle插件版本同步更到3.1.x,比如classpath 'com.android.tools.build:gradle:3.1.0',插件和AS版本匹配才能减少兼容性问题哦。
内容的提问来源于stack exchange,提问作者0xAliHn
相关产品推荐
相关产品推荐

