【问题标题】:Migrating to Gradle Plugin 3.0, aapt2 build error迁移到 Gradle 插件 3.0,aapt2 构建错误
【发布时间】:2018-04-18 12:55:41
【问题描述】:

迁移到 Gradle Plugin 3.0 时,AAPT2 默认启用。 当我尝试构建项目时,出现此错误。我知道我可以在 gradle.properties 中禁用 aapt2,但这是一个临时解决方案。有人遇到过这个问题吗?

:androiduitableview:processDebugAndroidTestResources 错误:无法创建目录 'C:\sm_build\Sales Management Android\androiduitableview\generated\source\r\androidTest\debug\br\com\dina\ui\test'。

执行 aapt 失败 com.android.ide.common.process.ProcessException:执行失败 适应于 com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796) 在 com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551) 在 com.android.build.gradle.tasks.ProcessAndroidResources.doFullTask​​Action(ProcessAndroidResources.java:285) 在 com.android.build.gradle.internal.tasks.IncrementalTask​​.taskAction(IncrementalTask​​.java:109) 在 sun.reflect.GeneratedMethodAccessor244.invoke(Unknown Source) at 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.DefaultTaskClassInfoStore$IncrementalTask​​Action.doExecute(DefaultTaskClassInfoStore.java:173) 在 org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134) 在 org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122) 在 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:197) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63) 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 在 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:197) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 在 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:124) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99) 在 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) 引起: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.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:794) ... 47 更多原因:java.util.concurrent.ExecutionException: com.android.tools.aapt2.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:179) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ... 1 更多原因:com.android.tools.aapt2.Aapt2Exception: AAPT2 错误:检查日志以获取详细信息 com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:454) 在 com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:411) 在 com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332) 在 com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

【问题讨论】:

  • split {} 似乎配置不正确...没有日志很难判断。
  • 在哪里可以找到有意义的日志?我尝试添加--stacktrace --info --debug,但无法找出错误原因。可能与我没有 androidTest 文件夹有关吗?
  • Android 构建工具不适用于路径中的空格。这不是 C:\sm_build\Sales Management Android 的来源,但简单地用下划线替换空格可能会修复构建。

标签: android android-studio gradle aapt


【解决方案1】:

尝试使用 --info 参数运行 gradle build。您可能会发现问题所在,在我的情况下,它使用的是aaptOptions { additionalParameters '--utf16' }

【讨论】:

  • 我得到 AAPT1 错误(1252273765 的外观):错误:创建目录失败
  • 这似乎是 AS 错误
【解决方案2】:

这是一个 AS 错误。当您从 build.gradle 更改构建目录时会发生这种情况。我开了一个issue,请starhttps://issuetracker.google.com/issues/68936311

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2018-04-10
    相关资源
    最近更新 更多