• java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details


    Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
        at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
        at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$compile$0(QueueableAapt2.java:136)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        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.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:443)
        at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:395)
        at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:312)
        at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

    这个错误单个拿出来讲解一下,是因为记录一下日常开发排错的方式以及日志的查阅:

    这个错误网上大部分的解决方式是:在项目的gradle.properties中添加一行 android.enableAapt2=false 的代码

    但是这种方式好像也并不能解决全部情况下的该问题,而且这种方式已经过时了。

    我遇到的问题加上这一句虽然不会报这个错误了,会报另一个错:

    NoSuchElementException

    Caused by: java.util.NoSuchElementException
        at com.google.common.collect.AbstractIndexedListIterator.next(AbstractIndexedListIterator.java:80)
        at com.google.common.collect.Iterators.getOnlyElement(Iterators.java:315)
        at com.google.common.collect.Iterables.getOnlyElement(Iterables.java:263)
        at com.android.builder.internal.aapt.v1.AaptV1.makePackageProcessBuilder(AaptV1.java:202)
        at com.android.builder.internal.aapt.AbstractProcessExecutionAapt.makeValidatedPackage(AbstractProcessExecutionAapt.java:67)
        at com.android.builder.internal.aapt.AbstractAapt.link(AbstractAapt.java:34)
        at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:807)
        ... 58 more

    所以并没有解决问题,这种解决方式我们就放弃了。

    另一种解决方式,接下来我们就开始查看详细日志,查找问题所在:

    编译失败后,会有错误信息,但是这个错误信息并没有告诉我们代码哪里出现了问题,这个时候我们需要查看更详细的日志,怎么查看?我们先确定在哪个 task 下出错,图中圈中所示: mergeDebugResources 出现错误。

    我们在 Terminal 中敲入命令运行:gradlew mergeDebugResources --stacktrace -info

    在日志中找到该信息,得认真一点找,这个信息是不是就告诉我们代码哪里出问题了。main module 中的 values.xml 116 行和117 行出问题了。我们进去看看:

    改正后,问题这样就解决了,是不是很开森。

  • 相关阅读:
    关于各种好玩的神奇函数
    模板——AC自动机
    模板——造数据
    VIM常用操作
    springboot注解
    面试题
    Linux常用命令
    Zookeeper
    对cpu与load的理解及线上问题处理思路
    top
  • 原文地址:https://www.cnblogs.com/aimqqroad-13/p/10558366.html
Copyright © 2020-2023  润新知