Android Gradle插件升级到3.3.0时抛出NullPointerException异常。

8

我刚升级到Android Studio 3.3,并尝试将Gradle插件更新到3.3.0,但项目构建失败。

该项目是一个包含应用程序(使用库)的库。已尝试所有方法:清除、重建、重置、删除.gradle目录,甚至重启电脑,但都没有成功。有任何想法吗?

以下是堆栈跟踪:

org.gradle.api.ProjectConfigurationException: 配置项目':screenz_library'时发生问题。 |95 个内部调用| 在 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)处 导致原因:com.android.build.gradle.internal.crash.ExternalApiUsageException: java.lang.NullPointerException 在 com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:137)处 在 com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:777)处 在 com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)处 在 com.android.build.gradle.BasePlugin.lambda$createTasks$4(BasePlugin.java:651)处 在 com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)处 在 com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt)处 在 org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:155)处 在 org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)处 在 org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)处 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)处 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)处 在 org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)处 在 org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)处 在 org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)处 在 org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)处 在 org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)处 在 org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)处 在 org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)处 在 org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)处 在 org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)处 在 org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)处 在 org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)处 在 org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)处 在 org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)处 在 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)处 在 com.sun.proxy.$Proxy29.afterEvaluate(Unknown Source)处 在 org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:187)处 在 org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:184)处 在 org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1418)处 在 org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:193)处 ... 95 more 导致原因:java.lang.NullPointerException 在 org.gradle.api.internal.tasks.DefaultTaskDependency.add(DefaultTaskDependency.java:185)处 在 org.gradle.api.internal.AbstractTask$12.run(AbstractTask.java:430)处 在 org.gradle.api.internal.tasks.TaskMutator.mutate(TaskMutator.java:40)处 在 org.gradle.api.internal.AbstractTask.dependsOn(AbstractTask.java:428)处 在 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.codehaus.groovy.runtime.callsite.PogoMeta

1
尝试执行无效化和重启,然后清理项目。 - Charan M
是的,尝试过了,没有运气。 - Sebastián Castro
2个回答

23

在尝试其他方法时我找到了解决方案。我的库的gradle文件中有Google服务插件,我将其移除后,项目就可以顺利构建了。

我删除了这一行。

apply plugin: 'com.google.gms.google-services'

上帝保佑你!这个行为在google-services插件版本<4中有效,但在4.0或更高版本中无效。 - Pelanes
2
如果我将其移除,Firebase 登录模块将无法工作。 - Parth Patel
据我所知,Firebase Auth 只需要 Firebase Core。https://firebase.google.com/docs/auth/android/start - Sebastián Castro
太好了,对我来说也是如此。它出现了两次,一次是在根应用程序模块中,另一次是在依赖库模块中。将其从库中移除后,修复了NPE问题。 - cV2
只花了我一个小时就找到了这个答案。如果没有它,谁知道要花多长时间才能搞清楚呢。我真的很讨厌 Android Studio 这种问题。谢谢! - ScottyB
当我将应用程序模块转换为库模块时,我遇到了同样的问题,并且从错误消息中毫无头绪! - sandeepd

0

在项目级别的build.gradle文件中更新Google Play服务的classpath

classpath 'com.google.gms:google-services:4.3.3'

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