java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2

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)

這個錯誤單個拿出來說解一下,是由於記錄一下平常開發排錯的方式以及日誌的查閱:java

這個錯誤網上大部分的解決方式是:在項目的gradle.properties中添加一行 android.enableAapt2=false 的代碼android

可是這種方式好像也並不能解決所有狀況下的該問題,並且這種方式已通過時了。gradle

我遇到的問題加上這一句雖然不會報這個錯誤了,會報另外一個錯:ui

NoSuchElementExceptiongoogle

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

因此並無解決問題,這種解決方式咱們就放棄了。spa

另外一種解決方式,接下來咱們就開始查看詳細日誌,查找問題所在:日誌

編譯失敗後,會有錯誤信息,可是這個錯誤信息並無告訴咱們代碼哪裏出現了問題,這個時候咱們須要查看更詳細的日誌,怎麼查看?咱們先肯定在哪一個 task 下出錯,圖中圈中所示: mergeDebugResources 出現錯誤。code

咱們在 Terminal 中敲入命令運行:gradlew mergeDebugResources --stacktrace -infoxml

在日誌中找到該信息,得認真一點找,這個信息是否是就告訴咱們代碼哪裏出問題了。main module 中的 values.xml 116 行和117 行出問題了。咱們進去看看:
blog

改正後,問題這樣就解決了,是否是很開森。

相關文章
相關標籤/搜索