自上次更新后构建失败

时间:2018-04-13 07:40:58

标签: android android-studio build android-gradle actionbarsherlock

自从我十天前更新Android工作室以来,我无法构建我的Android项目。我昨天再次更新了,但我还是无法建立项目。最糟糕的是我无法确定这个问题的根源(我真的是Android noob)。

在构建报告窗口中,它显示:

运行构建>运行任务> :app:processDebugResources>执行TaskAction:

  

org.gradle.tooling.BuildException:无法处理资源,请参阅   aapt输出上面的细节。在   com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.invokeAaptForSplit(LinkApplicationAndroidResourcesTask.java:512)     在   com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.doFullTask​​Action(LinkApplicationAndroidResourcesTask.java:249)     在   com.android.build.gradle.internal.tasks.IncrementalTask​​.taskAction(IncrementalTask​​.java:106)     在sun.reflect.GeneratedMethodAccessor179.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在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.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)     在   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)抑制:   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:104)         在   com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.doFullTask​​Action(LinkApplicationAndroidResourcesTask.java:293)         ... 47更多引起:   com.android.ide.common.process.ProcessException:无法执行   哎呀   com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:809)     在   com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:797)     在   com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask.invokeAaptForSplit(LinkApplicationAndroidResourcesTask.java:491)     ... 48更多引起: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.internal.aapt.AbstractAapt.link(AbstractAapt.java:34)     在   com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:807)     ... 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:166)     在   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:443)     在   com.android.builder.png.AaptProcess $ NotifierProcessOutput.err(AaptProcess.java:395)     在   com.android.builder.png.AaptProcess $ ProcessOutputFacade.err(AaptProcess.java:312)     在   com.android.utils.GrabProcessOutput $ 1.run(GrabProcessOutput.java:104)

Java编译器:>链接引用失败

Android问题:> ../../.gradle/caches/transforms-1/files-1.1/actionbarsherlock-4.4.0.aar/278d29925e50f728f41382ea6efbdca1/res/values/values.xml>错误:资源android:attr / popupPromptView是私有的。

自从我2年前创建以来,这个项目使用了actionbarsherlock,这是我项目的第五个版本增量,我从未遇到过这样的问题。

我无效地使缓存无效并清理了项目。我删除了文件夹:.gradle,gradle,grdl,grdl.gradle,.idea,build和deleted .iml文件。

我尝试使用更高的minSdkVersion和compileSdkVersion,没有任何帮助。

我还应该在这里发布什么才能揭示无法建立的原因?

3 个答案:

答案 0 :(得分:0)

检查以下内容并更新:

  1. minSdkVersion 16> = 14
  2. compileSdkVersion 27
  3. 支持lib版本27.1.1
  4. 在整个项目中查找android:attr/popupPromptView并将其删除,因为日志说它现在是私有的。
  5. 将actionbarsherlock更改为AppCompat并查看错误是否仍然存在并更新

答案 1 :(得分:0)

首先备份项目文件夹。然后删除app内部和app文件夹之外的所有build文件夹。然后删除不需要的其他文件夹和文件除了" app" folder,build.gradle,build.properties,settings.gradle文件。然后在android studio中打开这个项目并添加新的gradle设置。在同步项目并配置了gradle设置后,单击Build - >重建项目。如果一切正确,我认为成功的项目将建立。试试这个。

答案 2 :(得分:0)

我遇到了同样的问题,并按如下方法解决了。

首先,您可以通过将android.enableAapt2=false添加到项目的gradle.properties文件中来解决此问题,就像某些人提到的那样,但是此方法很快就会被弃用,因此从长远来看效果不好。

当然,问题是actionbarsherlock从2014年起不再受支持,并且有些事情中断了。

我通过将actionbarsherlock引入项目并进行必要的修改来解决了这个问题:

  1. 将必要的文件复制到您的项目中,我刚刚从http://actionbarsherlock.com/下载了最新版本。将ActionBarSherlock\actionbarsherlock\src中的两个文件夹合并到您的项目中,还将ActionBarSherlock\actionbarsherlock\res

  2. 链接到android-support-v4.jar库,该库的任何版本似乎都有效

  3. com.actionbarsherlock.R替换为com.yourname.R

  4. 删除android:popupPromptView中的app\src\main\res\values\abs__attrs.xml(最初的问题制造者)实际上是未使用的资源。

  5. 按照here中所述的步骤修复由旧代码引起的次要编译问题。

希望有帮助