简体   繁体   English

在自动化的Android构建中找不到插件gradle错误

[英]Plugin not found gradle errors in automated Android build

Since adding Kotlin to our Android source, we're having intermittent failures on our automated builds. 自从将Kotlin添加到我们的Android源代码以来,我们的自动构建出现了间歇性故障。 Most builds fail while the occaisonal build, say 1/10 perhaps, will succeed. 大多数构建都会失败,而偶然的构建(也许会说1/10)会成功。 The errors didn't occur before introducing Kotlin, and they don't occur when building locally on our dev machines- only on the build server. 这些错误在引入Kotlin之前没有发生过,并且在我们的开发机器上(仅在构建服务器上)本地构建时也不会发生。

When building via the command line (ie gradlew assembleFlavour1Flavour2 ) we get the following error: Plugin with id 'com.android.application' not found . 通过命令行(即gradlew assembleFlavour1Flavour2 )进行构建时,出现以下错误: Plugin with id 'com.android.application' not found However, when we build from Android Studio (on the build server, the same Jenkins slave) we get a slightly different error: Plugin with id 'kotlin-android' not found . 但是,当我们从Android Studio进行构建时(在构建服务器上,是相同的Jenkins从属服务器),我们会得到一个略有不同的错误: Plugin with id 'kotlin-android' not found I have updated Android Studio (Through File > Settings > System Settings > Updates ) and Kotlin (through Android Studio > Tools > Kotlin > Configure Kotlin Plugin Updates ). 我已经更新了Android Studio(通过File > Settings > System Settings > Updates )和Kotlin(通过Android Studio > Tools > Kotlin > Configure Kotlin Plugin Updates )。

Our root build.gradle is as follows: 我们的root 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
}

Our application build.gradle, app/build.gradle , is (with sensetive business-specific parts redacted) as follows: 我们的应用程序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'
}

For completeness, a full output from the command-line with --stacktrace: 为了完整起见,从命令行使用--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 reports the following version info: 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

According to the SDK Manager within Android Studio, we have the following SDK Platforms installed: Android API 27 (rev. 1) , Android 8.0 (Oreo) (rev. 2) , and the following SDK Tools installed: Android SDK Build-Tools , Android Emulator (27.0.2) (NB the machine is a VM, so the emulator doesn't work), Android SDK Platform-Tools (27.0.1) , Android SDK Tools (26.1.1) , Android Support Repository (47.0.0) , Google Repository (58) . 根据Android Studio中的SDK Manager,我们安装了以下SDK平台: Android API 27 (rev. 1)Android 8.0 (Oreo) (rev. 2)和以下SDK工具: Android SDK Build-Tools Android 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 version is 3.0, build no AI-171.4443003 , SDK tools 26.1.1 , platform version API 27 revision 1. "ignored updates" is blank. Android Studio版本为3.0,未构建AI-171.4443003 ,SDK工具26.1.1 ,平台版本API 27修订版1。“忽略的更新”为空白。

Update: Tried re-installing the Kotilin plugin and re-installing Android Studio altogether, neither worked. 更新:尝试重新安装Kotilin插件并完全重新安装Android Studio,但均无效果。 Tried creating a new default Android project with Kotilin on the server, and that has the exact same problem. 尝试在服务器上使用Kotilin创建一个新的默认Android项目,并且存在完全相同的问题。 So I'm thinking it must be a problem with the server configuration. 因此,我认为服务器配置一定有问题。

I've also found that I can create a new default project without Kotlin and it: builds in Android Studio, but doesn't build through the CLI. 我还发现,我可以创建一个没有科特林一个新的默认的项目和它:建立在Android Studio中,而是通过CLI 建。

Why are these errors occuring and what can I do to resolve them? 为什么会出现这些错误,我该怎么解决?

You are missing maven { url "https://maven.google.com" } . 您缺少maven { url "https://maven.google.com" } Correctly it should be: 正确的是:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM