Android Studio 3.0 Beta 1升级后,Gradle同步失败

34

一个项目在使用Android Studio 3.0 Canary 9时同步和构建正常。但是升级到Android Studio 3.0 Beta 1后立即失败了Gradle同步!

在Debian GNU/Linux 9(Stretch,稳定,最新)上使用Android Studio捆绑的Java 8,没有进行任何修改。

更新:通过Beta 2解决

https://androidstudio.googleblog.com/2017/08/android-studio-30-beta-2.html

注意:需要额外的努力来重写代码,以避免针对Android的问题 Java库。


更新:Google的第一次尝试

https://androidstudio.googleblog.com/2017/08/android-studio-30-beta-1.html

出现了几个问题(例如,在--min-sdk-version >= 26情况下没有签名多态方法的错误)

这些问题在Canary 9上不存在!

    Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: org.gradle.tooling.BuildException: com.android.dx.cf.code.SimException: signature-polymorphic method called without --min-sdk-version >= 26

(谷歌的“非解决方案”)


同步原始问题

在 Windows 上也有相同的问题

升级到 Android Studio 3.0 Beta 1 后 Gradle 错误

来自 Studio

Build: 3.0 Beta 1, AI-171.4243858, 201708032321, 

AI-171.4243858, JRE 1.8.0_152-release-915-b01x64 JetBrains s.r.o, OS Linux(amd64) v4.9.0-3-amd64 unknown, screens 1920x1080, 1920x1080 
Gradle '...' 项目刷新失败。
Cause: java.lang.NullPointerException
at sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:77)
at sun.nio.fs.UnixPath.<init>(UnixPath.java:71)
at sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:281)
at java.nio.file.Paths.get(Paths.java:84)
at com.android.build.gradle.internal.scope.BuildOutput.getOutputPath(BuildOutput.java:222)
at com.android.build.gradle.internal.scope.BuildOutputs.lambda$load$2(BuildOutputs.java:243)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1376)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.android.build.gradle.internal.scope.BuildOutputs.load(BuildOutputs.java:245)
at com.android.build.gradle.internal.scope.BuildOutputs.load(BuildOutputs.java:184)
at com.android.build.gradle.internal.scope.BuildOutputs.load(BuildOutputs.java:140)
at com.android.build.gradle.internal.ide.BuildOutputsSupplier.lambda$get$1(BuildOutputsSupplier.java:55)
at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:397)
at com.android.build.gradle.internal.ide.BuildOutputsSupplier.get(BuildOutputsSupplier.java:50)
at com.android.build.gradle.internal.ide.BuildOutputsSupplier.get(BuildOutputsSupplier.java:35)
at com.android.build.gradle.internal.ide.AndroidArtifactImpl.getOutputs(AndroidArtifactImpl.java:134)
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.tooling.internal.adapter.ProtocolToModelAdapter$ReflectionMethodInvoker.invoke(ProtocolToModelAdapter.java:592)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$AdaptingMethodInvoker.invoke(ProtocolToModelAdapter.java:397)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$PropertyCachingMethodInvoker.invoke(ProtocolToModelAdapter.java:625)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$SafeMethodInvoker.invoke(ProtocolToModelAdapter.java:647)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$SupportedPropertyInvoker.invoke(ProtocolToModelAdapter.java:670)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$InvocationHandlerImpl.invoke(ProtocolToModelAdapter.java:356)
at com.sun.proxy.$Proxy220.getOutputs(Unknown Source)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidArtifactImpl.<init>(IdeAndroidArtifactImpl.java:57)
at com.android.tools.idea.gradle.project.model.ide.android.IdeVariantImpl.lambda$new$0(IdeVariantImpl.java:60)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.lambda$computeIfAbsent$0(ModelCache.java:31)
at java.util.HashMap.computeIfAbsent(HashMap.java:1126)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.computeIfAbsent(ModelCache.java:31)
at com.android.tools.idea.gradle.project.model.ide.android.IdeVariantImpl.<init>(IdeVariantImpl.java:59)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidProjectImpl.lambda$new$4(IdeAndroidProjectImpl.java:88)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.lambda$computeIfAbsent$0(ModelCache.java:31)
at java.util.HashMap.computeIfAbsent(HashMap.java:1126)
at com.android.tools.idea.gradle.project.model.ide.android.ModelCache.computeIfAbsent(ModelCache.java:31)
at com.android.tools.idea.gradle.project.model.ide.android.IdeModel.copy(IdeModel.java:74)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidProjectImpl.<init>(IdeAndroidProjectImpl.java:87)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidProjectImpl.<init>(IdeAndroidProjectImpl.java:68)
at com.android.tools.idea.gradle.project.model.AndroidModuleModel.<init>(AndroidModuleModel.java:131)
at com.android.tools.idea.gradle.project.sync.idea.AndroidGradleProjectResolver.populateModuleContentRoots(AndroidGradleProjectResolver.java:214)
at org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension.populateModuleContentRoots(AbstractProjectResolverExtension.java:103)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.doResolveProjectInfo(GradleProjectResolver.java:366)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.access$200(GradleProjectResolver.java:79)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:902)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:886)
at org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper.execute(GradleExecutionHelper.java:218)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:139)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:79)
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.lambda$resolveProjectInfo$0(RemoteExternalSystemProjectResolverImpl.java:37)
at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:59)
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:37)
at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:45)
at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:66)
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:139)
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:125)
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3.execute(ExternalSystemUtil.java:388)
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$5.run(ExternalSystemUtil.java:445)
at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:726)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:176)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:556)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:163)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:137)
at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:334)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

请参见https://dev59.com/mlcO5IYBdhLWcg3wkiZN。 - der_Fidelis
谢谢@der_Fidelis,但是其他问题也出现了(例如,关于签名多态方法的错误,而没有--min-sdk-version> = 26)。当使用Canary 9时,不存在这个问题。 - Nuno Henriques
如果您想发布一个新问题并链接给我,我会尽力帮助。 - der_Fidelis
1
感谢您编辑问题并将其链接到已知问题的修复方式! - batjko
1
欢迎 @batjko :-)! 我仍在努力解决构建错误问题,需要 API >= 26。我正在使用 Apache 的知名库,例如 Lucene。此外,我的纯 Java 模块都是 Java 7,以避免 Java 8 Android 问题。 - Nuno Henriques
可能是Gradle error upgrading to Android Studio 3.0 Beta 1的重复问题。 - nhaarman
7个回答

27

更新:Android Studio 3.0 Beta 3

修复了以下bug:

图片描述

看起来这个问题已经解决了。从3.0 Beta 2升级到3.0 Beta 3后,我不需要手动清理项目。

更新:Android Studio 3.0 Beta 2

根据官方的Android Studio 3.0 Beta 2已知问题:

如果您有一个使用Android插件3.0.0 alpha版本(例如 3.0.0-alpha9)的现有Android Studio项目, 当您迁移到Android插件3.0.0-beta1(或更高版本)并同步项目时,您可能会遇到以下错误:Gradle项目刷新失败。

通过选择菜单栏中的Build > Clean Project解决此问题。

图片描述


我刚刚进行了更新,为什么会出现这种情况?有什么特别的原因吗? - Cobra47
这个运行良好。感谢提供信息。 :-) - Mohamed Ibrahim
如果您正在从 alpha 版本更新,例如 3.0.0-alpha9,则更有可能遇到此错误。这是 Android Studio 中的一个错误。一旦您更新到 beta 版本,例如 3.0.0-beta1,此问题就不应再出现。@Cobra47 - Prokash Sarkar

14

谢谢,这不能再简单了 :) - Vrutin Rathod

8

请点击此处阅读:https://androidstudio.googleblog.com/2017/08/android-studio-30-beta-1.html

  1. 从菜单栏中选择 View > Tool Windows > Terminal 打开终端窗口。
  2. 使用以下命令删除所有中间文件和缓存的构建文件:gradlew clean。
  3. 使用以下命令构建您的项目:gradlew assemble。
  4. 通过单击工具栏中的 Sync Project 按钮与 Gradle 同步您的项目文件。

或者,您可以像我一样,打开 "Gradle" 选项卡并运行 "clean",然后再运行 "assemble",如下所示:

在 Android Studio 的右侧,打开 "gradle" 选项卡,然后在 ":app"/"Tasks"/"build" 中您将看到 "clean"、"assemble" 和其他任务。

首先运行清洁操作,然后运行构建操作,可能会出现错误,但它仍然有效,最后重新构建您的项目。


谢谢@Devofure,但是对我并没有完全起作用。我已经编辑了我的问题来解释出了什么问题! - Nuno Henriques

2

谷歌提供了一个解决方案

从菜单栏选择 Build > Clean Project 来解决此问题。你只需要对每个项目执行一次这个操作。然后你可以通过点击工具栏上的 Sync Project 来同步你的 Gradle 项目文件。


2

以下解决方案对我没有用:

  1. 一遍又一遍地按那个重试按钮
  2. 使用离线和在线Gradle更改
  3. 清除、同步或重新构建

解决方案:

在尝试了所有这些方法之后,我只需访问~/.gradle文件夹,它包含一个名为wrapper的单个文件夹,只需将其重命名为其他任何名称,例如wrapper123。问题解决了!按下构建按钮,它将开始同步和构建项目。


这是自从我升级到Android Studio 3.0.1后唯一有效的解决方案。 - Magnus

0

在修复错误之前需要在线上工作(修复Gradle错误后,可以离线工作)
1.从https://gradle.org/releases下载最新版本的Gradle。
2.下载zip文件后,将所有文件提取到一个文件夹中(为了顺利工作:将文件夹命名为“gradle4”,并将其放置在与Android Studio安装在同一本地磁盘中。例如:您将Android Studio安装在本地磁盘c中,则将“gradle4”放置在本地磁盘c中)
3.Android Studio -> 文件菜单 -> 设置 -> 构建、执行、部署 -> Gradle
4.勾选“使用本地Gradle分发”
5.将Gradle文件夹路径添加到Gradle主目录选项中Gradle设置步骤5的屏幕截图

6.启用嵌入式Maven存储库 启用Maven存储库的屏幕截图

点击 -> 应用
构建菜单 -> 清理项目
-问题已解决-


0

我使用的是 Android Studio 3.0 Beta 2,并且发现在这里建议的 cleansync 之上,对于我的Java-Kotlin混合代码库项目,我必须将我的Kotlin版本降至1.1.3-2,这是IDE捆绑版本,cleansync 就可以工作,然后我可以将 Kotlin 版本更新回写作时最新的1.1.4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接