首页 文章

迁移到Gradle Plugin 3.0,aapt2构建错误

提问于
浏览
1

迁移到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.build.tasks上的com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)执行aapt . ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)在com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)在com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask . java:109)at the sun.reflect.GeneratedMethodAccessor244.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org位于org.gradle.api.internal的org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore $ IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173)中的.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) .project.taskfactory.DefaultTaskClassInfoStore $ StandardTaskAct ion.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 . 执行.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(Exe cuteActionsTaskExecuter.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)在有机.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)在org.gradle.api的org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) .internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)at org.gradle.a pi.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)at atorg.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)at org.gradle.execution.taskgraph . 在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的org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580) . 执行.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)at org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailu在java的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)的org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run(ManagedExecutorImpl.java:46)中的res.onExecute(ExecutorPolicy.java:63) . util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)atg.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)at 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.concurren t.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:在com.google.common.util上查看com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)中的详细信息 . .concurrent.AbstractFuture.get(AbstractFuture.java:462)位于com.android.builder.internal.aapt.v2.QueueableAapt2的com.google.common.util.concurrent.AbstractFuture $ TrustedFuture.get(AbstractFuture.java:79) .lambda $ makeValidatedPackage $ 1(QueueableAapt2.java:179)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617).. .1更多引起:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取com.android.builder上com.android.builder.png.AaptProcess $ NotifierProcessOutput.handleOutput(AaptProcess.java:454)的详细信息com.android.builder.png.AaptProcess $ ProcessOutputFacade.err(AaptProcess.java:.png.AaptProcess $ NotifierProcessOutput.err(AaptProcess.java:411) 332)在com.android.utils.GrabProcessOutput $ 1.run(GrabProcessOutput.java:104)

3 回答

  • 0

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

  • 1

    这是一个AS bug . 从build.gradle更改构建目录时会发生这种情况 . 我已经开了一个问题,请明星https://issuetracker.google.com/issues/68936311

  • -1

    错误读取 failed to create directory .

    会建议更新以构建工具和支持库到版本 26.0.2 并且还抛弃 buildDir = "C:/test_gradle/${rootProject.name}/${project.name}" 因为这可能不会用于任何目的,至少没有任何我理解的(这可能应该在模块级别设置) . 如上所述,在Linux上构建可构建的(没有更新)之后:

    ./gradlew build
    Download 
    ...
    
    BUILD SUCCESSFUL in 29s
    57 actionable tasks: 57 executed
    

    不会出任何明星,因为这个bug是不可重现的,至少在Linux上不行 .

    https://docs.gradle.org/current/dsl/org.gradle.api.Project.html

    buildDir此项目的构建目录 . 构建目录是生成所有工件的目录 . build目录的默认值是projectDir / build .

    有没有尝试改变整个 projectDir 而不是项目外部 buildDir

相关问题