插件没有在Android自动构建中发现gradle错误

由于将Kotlin添加到我们的Android源代码中,我们在自动构建中发生间歇性故障。 大部分的构建都失败了,而十进制构建也许会成功。 在引入Kotlin之前,这些错误并没有发生,而且在我们的开发机器上本地构建时,不会发生这些错误 – 只能在构建服务器上进行。

当通过命令行(即gradlew assembleFlavour1Flavour2 )建立时,我们得到以下错误: Plugin with id 'com.android.application' not found 。 但是,当我们从Android Studio构建(在构建服务器上,相同的jenkins奴隶),我们得到一个稍微不同的错误: Plugin with id 'kotlin-android' not found 。 我更新了Android Studio(通过File > Settings > System Settings > Updates )和Kotlin(通过Android Studio > Tools > Kotlin > Configure Kotlin Plugin Updates )。

我们的根build.gradle如下所示:

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.2.10' repositories { google() jcenter() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath 'io.fabric.tools:gradle:1.25.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

我们的应用程序build.gradle, app/build.gradle ,(具有app/build.gradle业务特定部分编辑)如下:

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'io.fabric' android { compileSdkVersion 26 buildToolsVersion '26.0.2' defaultConfig { applicationId "..." minSdkVersion 17 targetSdkVersion 26 versionCode 1 versionName "0.4.2" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } flavorDimensions "redacted", "redacted" productFlavors { ...(redacted)... } sourceSets { ...(redacted)... } buildTypes { debug { debuggable true minifyEnabled false shrinkResources false applicationIdSuffix '.debug' } release { debuggable false minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } // Set application name and filename android.applicationVariants.all { variant -> ...(redacted)... } //Add deploy tasks android.applicationVariants.all { variant -> ...(redacted)... } //Add generate javadoc task project.tasks.create(name: "generateJavadoc", type:Javadoc) { ...(redacted)... } //Add clear javadoc task- ensures any previous javadoc files are removed first project.tasks.create(name: "deleteJavadocDeployment", type:Delete) { ...(redacted)... } //Add deploy javadoc task project.tasks.create(name: "deployJavadoc", type:Copy, dependsOn: ['deleteJavadocDeployment', 'generateJavadoc']) { ...(redacted)... } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:design:26.1.0' implementation 'com.android.support:support-v4:26.1.0' implementation 'com.squareup.okhttp3:okhttp:3.9.0' implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation('com.squareup.retrofit2:converter-gson:2.2.0') compile 'com.google.code.gson:gson:2.8.2' compile 'com.google.android.gms:play-services-vision:11.8.0' compile 'com.google.android.gms:play-services-maps:11.8.0' compile 'com.google.android.gms:play-services-places:11.8.0' compile 'com.google.android.gms:play-services-location:11.8.0' compile('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') { transitive = true; } compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'org.mockito:mockito-core:2.11.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' androidTestImplementation 'org.mockito:mockito-android:2.11.0' androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.9.0' } 

为了完整起见,命令行提供了完整的输出–stacktrace:

 FAILURE: Build failed with an exception. * Where: Build file 'redacted\app\build.gradle' line: 1 * What went wrong: A problem occurred evaluating project ':app'. > Plugin with id 'com.android.application' not found. * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':ap p'. at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptR unnerImpl.run(DefaultScriptRunnerFactory.java:92) at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$ 2.run(DefaultScriptPluginFactory.java:187) at org.gradle.configuration.ProjectScriptTarget.addConfiguration(Project ScriptTarget.java:77) at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl. apply(DefaultScriptPluginFactory.java:192) at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperat ionScriptPlugin.java:61) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(De faultBuildOperationExecutor.java:197) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(Defaul tBuildOperationExecutor.java:107) at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperat ionScriptPlugin.java:58) at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildSc riptProcessor.java:39) at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildSc riptProcessor.java:26) at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.eva luate(ConfigureActionsProjectEvaluator.java:34) at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigur e(LifecycleProjectEvaluator.java:63) at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100 (LifecycleProjectEvaluator.java:33) at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureP roject.run(LifecycleProjectEvaluator.java:103) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(De faultBuildOperationExecutor.java:197) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(Defaul tBuildOperationExecutor.java:107) at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(L ifecycleProjectEvaluator.java:49) at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProjec t.java:651) at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProjec t.java:133) at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProje ctEvaluator.java:35) at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(Task PathProjectEvaluator.java:62) at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuil dConfigurer.java:38) at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(De faultGradleLauncher.java:246) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(De faultBuildOperationExecutor.java:197) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(Defaul tBuildOperationExecutor.java:107) at org.gradle.initialization.DefaultGradleLauncher.configureBuild(Defaul tGradleLauncher.java:165) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default GradleLauncher.java:124) at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultG radleLauncher.java:107) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBui ldController.java:78) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBui ldController.java:75) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultW orkerLeaseService.java:152) at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBu ildController.java:100) at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildC ontroller.java:75) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(Exe cuteBuildActionRunner.java:28) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildA ctionRunner.java:35) at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run( ValidatingBuildActionRunner.java:32) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(R unAsBuildOperationBuildActionRunner.java:43) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBu ildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(De faultBuildOperationExecutor.java:197) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(Defaul tBuildOperationExecutor.java:107) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(Run AsBuildOperationBuildActionRunner.java:40) at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.ru n(SubscribableBuildActionRunner.java:51) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce ssBuildActionExecuter.java:45) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce ssBuildActionExecuter.java:29) at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(Bu ildTreeScopeBuildActionExecuter.java:39) at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(Bu ildTreeScopeBuildActionExecuter.java:25) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.ex ecute(ContinuousBuildActionExecuter.java:71) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.ex ecute(ContinuousBuildActionExecuter.java:45) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter .execute(ServicesSetupBuildActionExecuter.java:51) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter .execute(ServicesSetupBuildActionExecuter.java:32) at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter. execute(GradleThreadBuildActionExecuter.java:36) at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter. execute(GradleThreadBuildActionExecuter.java:25) at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildAct ionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43) at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildAct ionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecu ter.execute(StartParamsValidatingActionExecuter.java:64) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecu ter.execute(StartParamsValidatingActionExecuter.java:29) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExe cuter.execute(SessionFailureReportingActionExecuter.java:55) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExe cuter.execute(SessionFailureReportingActionExecuter.java:42) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execu te(SetupLoggingActionExecuter.java:58) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execu te(SetupLoggingActionExecuter.java:33) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBu ild.java:67) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build CommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute( WatchForDisconnection.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute (ResetDeprecationLogger.java:26) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon. execute(RequestStopIfSingleUsedDaemon.java:34) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(Forw ardClientInput.java:74) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(Forw ardClientInput.java:72) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(For wardClientInput.java:72) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogA ndCheckHealth.java:55) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClien t.java:62) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build CommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBu ild(EstablishBuildEnvironment.java:82) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build CommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1. run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(Daemon StateCoordinator.java:297) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures. onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecu torImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnabl e.run(ThreadFactoryImpl.java:55) Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'com.an droid.application' not found. at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPlu ginManager.java:123) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.appl yType(DefaultObjectConfigurationAction.java:113) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.acce ss$200(DefaultObjectConfigurationAction.java:36) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.ru n(DefaultObjectConfigurationAction.java:80) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.exec ute(DefaultObjectConfigurationAction.java:136) at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPlu ginAware.java:46) at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.jav a:34) at org.gradle.api.Script$apply.callCurrent(Unknown Source) at build_jesrcyvk01ha499dnctvfqjo.run(redacted\app\buil d.gradle:1) at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptR unnerImpl.run(DefaultScriptRunnerFactory.java:90) ... 93 more 

gradlew -v报告以下版本信息:

 ------------------------------------------------------------ Gradle 4.1 ------------------------------------------------------------ Build time: 2017-08-07 14:38:48 UTC Revision: 941559e020f6c357ebb08d5c67acdb858a3defc2 Groovy: 2.4.11 Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015 JVM: 1.8.0_152 (Oracle Corporation 25.152-b16) OS: Windows Server 2012 R2 6.3 x86 

根据Android Studio中的SDK Manager,我们安装了以下SDK平台: Android API 27 (rev. 1)Android 8.0 (Oreo) (rev. 2)以及以下SDK工具: Android SDK Build-ToolsAndroid Emulator (27.0.2) (注意机器是VM,所以模拟器不工作), Android SDK Platform-Tools (27.0.1)Android SDK Tools (26.1.1)Android Support Repository (47.0.0)Google Repository (58)

Android Studio版本为3.0,不包含AI-171.4443003 ,SDK工具26.1.1 ,平台版本API 27修订版本1.“忽略更新”为空。

更新:尝试重新安装Kotilin插件和重新安装Android Studio,都没有工作。 尝试在服务器上使用Kotilin创建一个新的默认Android项目,这个问题完全一样。 所以我认为这一定是服务器配置的问题。

我还发现,我可以创建一个没有 Kotlin的新的默认项目,它:构建在Android Studio,但通过CLI构建。

为什么这些错误发生,我能做些什么来解决这些错误?

您缺少maven { url "https://maven.google.com" } 。 正确的应该是:

 allprojects { repositories { google() jcenter() maven { url "https://maven.google.com" } } }