2018年5月18日更新:
在目前最新Android Studio3.1.2以及以下配置中
com.android.tools.build:gradle:3.1.2
compileSdkVersion 26
buildToolsVersion '27.0.3'
官方已成功修复Aapt2错误,再也不用在gradle.properties里面加false代码了,仍有AAPT2错的同学,请将AS以及以上配置升级为最新即可。
错误背景:我之前用的是Android Studio 3.0.1,一直有AAPT2的报错,每次都是在gradle.properties里面加以下代码解决
android.enbaleAapt2=false
2018年4月10日手贱升级Android Studio3.1.1后,Build没错,Run的时候AAPT2错误依然存在,还多了八万个BUG
错误日志为
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugResources'.
at java.lang.Thread.run(Thread.java:745)
Caused by: com.android.build.gradle.tasks.ResourceException: Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:296)
... 32 more
Caused by: Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:332)
... 48 more
Suppressed: java.lang.RuntimeException: Some file processing failed, see logs for details
at com.android.builder.internal.aapt.QueuedResourceProcessor.waitForAll(QueuedResourceProcessor.java:121)
... 48 more
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:327)
... 51 more
Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
... 1 more
Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
其实多出来的BUG依然是因为AAPT2的BUG持续,但是你发现:下面的语句加上后在AS3.1.1没有用处了,Run还是报错
android.enbaleAapt2=false
解决办法1: build:gradle切换回原来的3.0.0版本
(1)在build.gradle(Project)里面的如图位置
把这一段 "classpath'com.android.tools.build:gradle:3.1.1'" 的 3.1.1 改成 3.0.0
如下 "classpath 'com.android.tools.build:gradle:3.0.0'"
(2)接着在我们gradle.properties里面再次加上以下代码即可,别忘记Sync Now
android.enableAapt2=false
解决办法2: build:gradle用最新的测试版本3.2.0-alpha09
(1)在build.gradle(Project)里面的如图位置
把这一段 "classpath'com.android.tools.build:gradle:3.1.1'" 的 3.1.1 改成 3.2.0-alpha09
如下 "classpath 'com.android.tools.build:gradle:3.2.0-alpha09'"
(2)接着在我们gradle.properties里面再次加上以下代码即可,别忘记Sync Now
android.useAapt2FromMaven=true
总结:
(1)AAPT2一直是部分Android Studio的玄学BUG,android.enableAapt2=false只是隐藏了BUG,而不是最终解决办法。
从build:gradle最新的测试版本3.2.0-alpha09可以看出AS可能未来要修复这个BUG
(2)解决方法1:没有实际解决AAPT2问题,相当于再次重新使用AS3.0.1,但是操作较为简便
(3)解决方法2:貌似解决了AAPT2问题,但Sync时需要下载build:gradle最新的测试版本3.2.0-alpha09,接近100MB,程序 员体验十分不友好
(4)以上解决办法都在2018年4月10日的Android Studio3.1.1实际运行过,均有效解决了问题
非商业转载请注明出处,商业转载请联系我~,如有疑问欢迎评论、私信,有帮助请打赏,萌新JedLee给大家ღ( ´・ᴗ・` )比心