【我的Android进阶之旅】解决编译报错:Cannot convert a null value to an object of type Dependency.

一、问题描述

今天在将一个内部SDK集成到一个新的apk时候,编译报错,如下所示:

下午 03:48	Gradle sync failed: Cannot convert a null value to an object of type Dependency.
					The following types/formats are supported:
					- Instances of Dependency.
					- String or CharSequence values, for example 'org.gradle:gradle-core:1.0'.
					- Maps, for example [group: 'org.gradle', name: 'gradle-core', version: '1.0'].
					- FileCollections, for example files('some.jar', 'someOther.jar').
					- Projects, for example project(':some:project:path').
					- ClassPathNotation, for example gradleApi().
					Comprehensive documentation on dependency notations is available in DSL reference for DependencyHandler type.
					Consult IDE log for more details (Help | Show Log) (11 s 626 ms)

在这里插入图片描述
其实这个问题很久很久一直出现过一次,过了这么久又出现了一次。居然发现自己没做笔记,这次就记下来吧。

二、问题分析

安装上面的提示,Help | Show Log,然后打开日志分析,如下所示

2.1 打开 Help–>Show Log in Exploreer

在这里插入图片描述

打开日志如下所示:
在这里插入图片描述

2.2 分析idea.log日志

打开日志分析,如日志所描述,build.gradle’ line: 213行出现了错误
在这里插入图片描述

6505 2020-03-11 15:53:06,179 [22178366]   INFO - a.AndroidGradleProjectResolver - Exception thrown during task execution 
6506 org.gradle.tooling.BuildException: Could not run build action using Gradle distribution 'http://xxx.com/resource/gradle/gradle-4.3-all.zip'.
6507     at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
6508     at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
6509     at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:41)
6510     at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
6511     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
6512     at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
6513     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
6514     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
6515     at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
6516     at java.lang.Thread.run(Thread.java:748)
6517 Caused by: org.gradle.internal.exceptions.LocationAwareException: Build file 'xxx\build.gradle' line: 213
6518 A problem occurred evaluating project ':moment'.
6519     at org.gradle.initialization.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:74)
6520     at org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:47)
6521     at org.gradle.initialization.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
6522     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:137)
6523     at org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild(DefaultGradleLauncher.java:104)
6524     at org.gradle.internal.invocation.GradleBuildController$2.call(GradleBuildController.java:87)
6525     at org.gradle.internal.invocation.GradleBuildController$2.call(GradleBuildController.java:84)
6526     at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
6527     at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
6528     at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:84)
6529     at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:65)
6530     at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
6531     at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
6532     at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
6533     at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
6534     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
6535     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
6536     at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
6537     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
6538     at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
6539     at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
6540     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
6541     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
6542     at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
6543     at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
6544     at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
6545     at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
6546     at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
6547     at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
6548     at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
6549     at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
6550     at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
6551     at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
6552     at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
6553     at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
6554     at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
6555     at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
6556     at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
6557     at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
6558     at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
6559     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
6560     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6561     at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
6562     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6563     at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
6564     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6565     at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
6566     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6567     at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
6568     at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
6569     at org.gradle.util.Swapper.swap(Swapper.java:38)
6570     at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
6571     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6572     at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
6573     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6574     at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
6575     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
6576     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6577     at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
6578     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
6579     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
6580     at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
6581     at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
6582     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
6583     at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
6584     at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
6585 Caused by: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':moment'.
6586     at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
6587     at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:209)
6588     at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
6589     at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:214)
6590     at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:61)
6591     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
6592     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
6593     at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
6594     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
6595     at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:58)
6596     at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
6597     at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
6598     at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
6599     at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:64)
6600     at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:34)
6601     at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:110)
6602     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
6603     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
6604     at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
6605     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
6606     at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
6607     at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:656)
6608     at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:135)
6609     at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
6610     at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
6611     at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
6612     at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:249)
6613     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
6614     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
6615     at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
6616     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
6617     at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:167)
6618     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:126)
6619     ... 62 more
6620 Caused by: org.gradle.internal.typeconversion.UnsupportedNotationException: Cannot convert a null value to an object of type Dependency.
6621 The following types/formats are supported:
6622   - Instances of Dependency.
6623   - String or CharSequence values, for example 'org.gradle:gradle-core:1.0'.
6624   - Maps, for example [group: 'org.gradle', name: 'gradle-core', version: '1.0'].
6625   - FileCollections, for example files('some.jar', 'someOther.jar').
6626   - Projects, for example project(':some:project:path').
6627   - ClassPathNotation, for example gradleApi().
6628 
6629 Comprehensive documentation on dependency notations is available in DSL reference for DependencyHandler type.
6630     at org.gradle.internal.typeconversion.ErrorHandlingNotationParser.parseNotation(ErrorHandlingNotationParser.java:56)
6631     at org.gradle.api.internal.artifacts.DefaultDependencyFactory.createDependency(DefaultDependencyFactory.java:45)
6632     at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.create(DefaultDependencyHandler.java:96)
6633     at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.doAdd(DefaultDependencyHandler.java:110)
6634     at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.access$200(DefaultDependencyHandler.java:45)
6635     at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler$DynamicMethods.tryInvokeMethod(DefaultDependencyHandler.java:219)
6636     at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:499)
6637     at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
6638     at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
6639     at org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:30)
6640     at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:59)
6641     at build_b2pvgubvj0mx1t4nmhxg6yz8z$_run_closure2.doCall(C:\CodeForAndroid\Moment\moment\build.gradle:213)
6642     at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
6643     at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
6644     at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
6645     at org.gradle.api.internal.project.DefaultProject.dependencies(DefaultProject.java:1151)
6646     at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
6647     at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
6648     at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
6649     at org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:30)
6650     at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:134)
6651     at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:160)
6652     at org.gradle.groovy.scripts.BasicScript.invokeMethod(BasicScript.java:83)
6653     at build_b2pvgubvj0mx1t4nmhxg6yz8z.run(C:\CodeForAndroid\Moment\moment\build.gradle:157)
6654     at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
6655     ... 94 more

2.3 分析build.gradle’ line: 213 行出现的错误

在这里插入图片描述
213行写的代码如下所示:

  implementation libraries.snmonitors

实际上我们定义的lib库是

 versions = [
			snmonitor            : '2.0.0-oyp-1-dev',
 ]
    
libraries = [
            snmonitor            : "com.oyp:monitor:${versions.snmonitor}",
 ]
   

在这里插入图片描述
因此我们应该写成 implementation libraries.snmonitor ,这样才和我们定义的版本关联上。

  implementation libraries.snmonitor

在这里插入图片描述

错误原因就是在使用的地方,写错了定义的库的名字,从而导致无法引用。所以才会提示如下所示的写法是支持的。

The following types/formats are supported:
					- Instances of Dependency.
					- String or CharSequence values, for example 'org.gradle:gradle-core:1.0'.
					- Maps, for example [group: 'org.gradle', name: 'gradle-core', version: '1.0'].
					- FileCollections, for example files('some.jar', 'someOther.jar').
					- Projects, for example project(':some:project:path').
					- ClassPathNotation, for example gradleApi().
					Comprehensive documentation on dependency notations is available in DSL reference for DependencyHandler type.
					Consult IDE log for more details (Help | Show Log) (5 s 532 ms)

改成正确的引用库之后,重新编译即可成功,如下所示:

在这里插入图片描述

三、总结

1、自己在其他的gradle文件中定义版本的话,在引用的时候需要写对,不然无法读取到。
2、也可以直接使用类似于 'org.gradle:gradle-core:1.0'. 或者 [group: 'org.gradle', name: 'gradle-core', version: '1.0'].或者project(':some:project:path').的方式来引用。但是得写对版本号!

猜你喜欢

转载自blog.csdn.net/qq446282412/article/details/104798437