转载:Android Studio 3.1.2 新项目报错 AAPT2 error: check logs for details (Gradle 3.1.2)
原本好好的項目,突然有一天打開就開始報錯AAPT2 error: check logsfor details。
?
展開錯誤詳細信息
錯誤文本
com.android.build.gradle.tasks.ResourceException:Error: java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logsfor details?錯誤全文
com.android.build.gradle.tasks.ResourceException: Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for detailsat com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:296)at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)at java.lang.Thread.run(Thread.java:745) Caused by: Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for detailsat com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:332)at com.android.ide.common.res2.DataMerger.mergeData(DataMerger.java:301)at com.android.ide.common.res2.ResourceMerger.mergeData(ResourceMerger.java:412)at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:285)... 48 moreSuppressed: java.lang.RuntimeException: Some file processing failed, see logs for detailsat com.android.builder.internal.aapt.QueuedResourceProcessor.waitForAll(QueuedResourceProcessor.java:121)at com.android.builder.internal.aapt.QueuedResourceProcessor.end(QueuedResourceProcessor.java:141)at com.android.builder.internal.aapt.v2.QueueableAapt2.close(QueueableAapt2.java:104)at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:293)... 48 more Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for detailsat 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.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 detailsat 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 detailsat 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)?
排除代碼問題
檢查了半天沒有找到問題在哪,又換另一臺電腦,同樣的代碼和IDE(都是Android Studio 3.1.2,只是在Ubuntu上),運行沒有任何問題,那么問題應該并不是出在代碼上,于是想到新建一個項目試試。于是直接創建了一個新項目,沒有修改任何設置,創建了一個甚至連活動都沒有新項目
果然,剛剛創建的項目在Build時報出同樣的錯誤
?
查閱資料,有網友表示“如果有問題可以退回到之前的版本,打開gradle.properties,添加如下內容”
android.enableAapt2=false對于一個習慣跟在技術更新前沿的人來說,回退版本是不可能的,這輩子都不可能的,但是添加代碼還是可以試試,于是便做出了嘗試,但還是遇到了報錯:
?
錯誤信息:
The option 'android.enableAapt2' isdeprecated and should not be used anymore. Use 'android.enableAapt2=true' to removethis warning. It will be removed at the end of 2018..翻譯一下就是:
選項“android.enableAapt2”已被棄用,不應再使用。
使用“android.enableAapt2=true”來刪除這個警告。
它將在2018年底被移除。
很明顯,我們使用“android.enableAapt2=false”來關閉AAPT2是行不通的,這個方法已經過時了,關閉之后Android Studio告訴我們要把它打開,這樣就陷入了一個死循環,所以我們還是需要找到問題的根本原因在哪里才能解決。
所以直接刪除了剛才插入的“android.enableAapt2=false”繼續找辦法
?
打印報錯信息
查閱各方資料,學到了一個可以在Android studio中打印詳細報錯信息的方法:
在命令行中進入項目的根目錄,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一個命令:
gradlewcompileDebug --stacktrace就可以輸出較詳細的信息,然后根據命令行給出的提示,還可以在后面加上-info或者-debug的選項得到更詳細的信息,于是這個命令可以這樣寫:
gradlewcompileDebug --stacktrace -info或者:
gradlewcompileDebug --stacktrace -debug先試第一行代碼
在Android Studio自帶的Terminal內輸入
gradlewcompileDebug --stacktrace回車之后并沒有給我們太多提示,但是在建議中有一句提到“Task'compileDebug' is ambiguous in root project”(翻譯:命令“'compileDebug”在根項目中是不明確的),回看之前的報錯,第一行提到了一個資源異常“ResourceException”
于是嘗試著把命令改成了
gradlewcompileDebugSources --stacktrace -info
再看顯示出來的信息,好像發現了點什么
錯誤信息
> Task :app:mergeDebugResources FAILED Exception while processing job : QueuedJob{ title=Compiling abc_ic_menu_copy_mtrl_am_alpha.png, task={from=C:\Users\鄭維一\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\a55ab1e075dbd5b5da002f93c40b9cfb\res\drawable-xhdpi-v4\abc_ic_menu_copy_mtrl_am_alpha.png, to=F:\Projects\AndroidStudioProjects\JinchengNewsAndroid\app\build\intermediates\res\merged\debug}, future=com.google.common.util.concurrent.SettableFuture@4d8f81a6} : com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details Exception while processing job : QueuedJob{ title=Compiling abc_btn_radio_to_on_mtrl_000.png, task={from=C:\Users\鄭維一\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\a55ab1e075dbd5b5da002f93c40b9cfb\res\drawable-hdpi-v4\abc_btn_radio_to_on_mtrl_000.png, to=F:\Projects\AndroidStudioProjects\JinchengNewsAndroid\app\build\intermediates\res\merged\debug}, future=com.google.common.util.concurrent.SettableFuture@6d94b091} : com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details Exception while processing job : QueuedJob{ title=Compiling notify_panel_notification_icon_bg.png, task={from=C:\Users\鄭維一\.gradle\caches\transforms-1\files-1.1\support-compat-26.1.0.aar\2efeba8952eb2c0e463a57b63c49f99f\res\drawable-xhdpi-v4\notify_panel_notification_icon_bg.png, to=F:\Projects\AndroidStudioProjects\JinchengNewsAndroid\app\build\intermediates\res\merged\debug}, future=com.google.common.util.concurrent.SettableFuture@19e643ef} : com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details Shutdown finished in 244ms Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details:app:mergeDebugResources (Thread[Task worker for ‘:’ Thread 3,5,main]) completed. Took 5.716 secs.
發現了中文!
敏感的察覺到,這里可能有問題!(胡說八道,其實是請教了一位大佬)
?
問題根源
“有人提到目前的這種非AsciⅡ的確是AAPT2和Gradle插件的一個bug,但現在已經被修復,只是Android Studio還未更新成這個被修復的版本?!?#xff08;大佬說的,暫未查證資料來源)
?
解決辦法
所以現在有兩個解決辦法,
?
一、修改gradle的緩存目錄
這個可以通過android studio的設置中找到gradle,配置另一個非中文目錄來緩存。
File -> Settings -> Build, Execution,Deployment -> Gradle進入這個頁面找到“Service directory path”項,將里面的路徑換到一個非中文路徑就好了
build成功!
?
二、指定你的項目使用較新的gradle 插件
在build.gradle(Project)中修改Gradle版本到3.2.0-alpha11或更新版本就可以了
最后還是提醒大家,開發程序不要使用中文目錄,會帶來無窮的困擾啊!!!
總結
以上是生活随笔為你收集整理的转载:Android Studio 3.1.2 新项目报错 AAPT2 error: check logs for details (Gradle 3.1.2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 岳阳鸿蒙数学培优阶梯训练,鸿蒙应用-呼吸
- 下一篇: 天天看底层有什么用