问题描述

AndroidStudio升级后,打开旧项目没问题,但是新建项目编译会报错:Errorcom.android.tools.aapt2.Aapt2Exception AAPT2 error check logs for details,查看gradle log,报错信息如下图(其实那些资源文件都是可以找到的)


问题定位

根据网上查找的资料,在Google gradle插件升级到3.0之后(Google Gradle插件在项目根目录下的build.gradle中引入,参考下图),就默认启用了appt2,这么做是为了加快编译的速度,但是如果你的Gradle缓存目录(一般在用户目录下,C:\Users\用户名\.gradle)中含有中文名称,那么就悲剧了,会出现上面的问题。个人总结原因是:Android Gradle 3.0之后对gradle缓存目录中的中文目录支持存在问题,所以导致了这样的错误。


解决方案

方案一:不使用appt2

在项目根目录下的gradle.properties文件(如果没有,新建)中添加以下配置:
android.enableAapt2=false
清理项目,重新编译,问题解决。

方案二:修改Gradle用户目录(推荐)

Android Studio中菜单栏,File->Settings,打开Gradle标签,修改Service directory path,将这个目录指定到一个没有中文目录的文件夹中,清理项目,重新编译,问题解决。

总结

虽然解决方案有两个,但是个人推荐使用方案二,方案一只是临时解决了当前项目,以后新建项目都需要进行配置;方案二修改了配置后,以后新建项目都不会出现这样的问题。在使用Android的过程中,已经出现过多个中错误都是对中文目录支持问题导致的,所以这次的错误解决,也让我想到了方案二这个解决办法,希望对大家有用。

    以上的方案也不是万能,虽然能解决掉AndroidStudio编译项目出现的报错问题,但是直接在命令行中运行gradle命令编译项目的时候,还是会报错。所以对于一个开发者来说,为了避免不必要的麻烦,还是希望在配置新电脑或在旧电脑中添加新用户的时候,千万别使用中文用户名。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐