【问题标题】:AAPT2 error: this error happened as soon as I updated my android studio to the latest versionAAPT2 错误:当我将我的 android studio 更新到最新版本时,这个错误就发生了
【发布时间】:2018-07-02 02:42:13
【问题描述】:

我尝试了“multiDexEnabled true”以及“android.enableAapt2=false”,但错误仍然存​​在。似乎有一些构建问题。这是什么?

org.gradle.api.tasks.TaskExecutionException:任务“:app:processDebugResources”执行失败。 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 在 org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97) 在 org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87) 在 org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在 org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 在 org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 在 java.lang.Thread.run(Thread.java:745) 引起:org.gradle.tooling.BuildException:无法执行aapt 在 com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.invokeAaptForSplit(LinkApplicationAndroidResourcesTask.java:513) 在 com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.doFullTask​​Action(LinkApplicationAndroidResourcesTask.java:248) 在 com.android.build.gradle.internal.tasks.IncrementalTask​​.taskAction(IncrementalTask​​.java:106) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 在 org.gradle.api.internal.project.taskfactory.IncrementalTask​​Action.doExecute(IncrementalTask​​Action.java:46) 在 org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) 在 org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) ... 32 更多 Suppressed: java.lang.RuntimeException: 一些文件处理失败,详情见日志 在 com.android.builder.internal.aapt.QueuedResourceProcessor.waitForAll(QueuedResourceProcessor.java:121) 在 com.android.builder.internal.aapt.QueuedResourceProcessor.end(QueuedResourceProcessor.java:141) 在 com.android.builder.internal.aapt.v2.QueueableAapt2.close(QueueableAapt2.java:115) 在 com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.doFullTask​​Action(LinkApplicationAndroidResourcesTask.java:293) ... 48 更多 引起:com.android.ide.common.process.ProcessException:无法执行aapt 在 com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794) 在 com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.invokeAaptForSplit(LinkApplicationAndroidResourcesTask.java:491) ... 49 更多 原因:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2Exception:AAPT2 错误:查看日志了解详细信息 在 com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503) 在 com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482) 在 com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79) 在 com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:792) ... 50 更多 原因:java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 错误:查看日志了解详情 在 com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503) 在 com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462) 在 com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79) 在 com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:177) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ... 1 更多 引起:com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 错误:查看日志了解详情 在 com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:463) 在 com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:415) 在 com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332) 在 com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

【问题讨论】:

  • 堆栈跟踪上方的 AAPT2 应该有错误。您可以尝试重新构建并发布这些错误吗?
  • 你有什么解决办法
  • 有什么解决办法吗?

标签: android gradle android-gradle-3.0 aapt2


【解决方案1】:

尝试执行:

./gradlew clean
./gradlew assemble

如果不起作用,请尝试使用 CleanRebuild 项目。最后,去

文件 > 使缓存无效

【讨论】:

  • @ReevanthLama 你能在运行“./gradlew clean assembleDebug”时发布整个构建日志吗?
  • 尝试删除Build文件夹并重建你的项目
  • 是的,它有助于查找 xml 文件中的错误。在 kotlin 中很难在 xml 文件中找到一些错误。没有给出正确的错误原因。在终端运行上述命令后,我很容易得到错误日志
  • 这确实是捕捉那些隐藏错误的方法,比如我忘记在颜色代码字符串中添加“#”,而不是很好的错误,我得到了飞船即将出现的星球大战控制台错误销毁..你为什么这样做谷歌
【解决方案2】:

我在尝试使用数据绑定和声明布局标签时遇到了这个问题。经过这么多尝试后,我为解决这个问题所做的是,当你不使用数据绑定时,在你的根布局上说例如这个

  <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">     </android.support.constraint.ConstraintLayout>

删除

xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"

然后把它放在你的布局标签上(如果你正在使用数据绑定

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

</layout>

希望它会起作用。 android.enableAapt2=false 对我不起作用,因此我必须删除所有内容并尝试找出为什么在放置布局标记并使用数据绑定时出现错误,因此我想出了解决方案。希望对你有帮助

【讨论】:

    【解决方案3】:

    问题在于它可能已损坏的 PNG 文件。有时图像被列为PNG,但不是真正的PNG。

    您可以通过在android终端中输入以下代码来获取此类图像的列表

    find . -type f -name "*.png" | xargs -L 1 -I{} file  -I {} | grep -v 'image/png; charset=binary$' 
    

    之后,您可以将它们转换为 PNG 并重试。

    不要添加此android.enableAapt2=false,因为它已被弃用且不受支持。

    【讨论】:

    • 我在 AS Ver 3.1.1 上得到了这个:'xargs' 不被识别为内部或外部命令、可运行程序或批处理文件
    【解决方案4】:

    尝试将compileSdkVersion 更改为:compileSdkVersion 28targetSdkVersion 26 这对我有用。

    【讨论】:

    • 这太令人沮丧了。这也没有奏效。 ;-\
    【解决方案5】:

    当我将 Android Studio 更新到 3.4.0 时,这发生在我身上。 我确实更改了项目级别的 build.gradle 文件...

    dependencies {
            //classpath 'com.android.tools.build:gradle:3.4.0'    //Previus default set up
    
           classpath 'com.android.tools.build:gradle:3.3.1' // Now working fine
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多