web-dev-qa-db-fra.com

Impossible de créer la variante 'Android-lint' après la configuration

Je mets à jour le plugin Gradle de mon projet de 2.1.2 à 3.1.0 mais le gradle commence à générer une erreur lors de la construction:

Impossible de créer la variante 'Android-lint' après la configuration ': app: debugRuntimeElements' a été résolu

niveau de projet:

 // Top-level build file 
 buildscript {
repositories {
    jcenter()
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    google()
}
dependencies {
    classpath 'com.Android.tools.build:gradle:3.1.1'
    classpath 'org.ajoberstar:gradle-git:0.6.3'
    //noinspection GradleDynamicVersion
    classpath 'io.fabric.tools:gradle:1.+'
    classpath 'me.tatarka:gradle-retrolambda:3.2.5'
    classpath 'com.google.gms:google-services:3.0.0'
}
}

 // Used to disable preDex, will speed up clean build but slow down incremental builds.
  project.ext.preDexLibs = !project.hasProperty('disablePreDex')

 subprojects {
project.plugins.whenPluginAdded { plugin ->
    if ("com.Android.build.gradle.AppPlugin".equals(plugin.class.name)) {
        project.Android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
    } else if ("com.Android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
        project.Android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
    }
}
}

allprojects {
repositories {
    jcenter()
 }
 }

niveau de bibliothèque:

 apply plugin: 'com.Android.library'

 setVersion '1.2'

repositories {
mavenCentral()
maven {
    url 'https://maven.google.com/'
    name 'Google'
}
}

configurations {
classpaths
}

def sharedManifest = manifest {
attributes('Specification-Title': 'My App',
           'Specification-Version': '2.1',
           'Specification-Vendor': 'App Vendor',
           'Implementation-Title': 'App',
           'Implementation-Version': '2.1',
           'Implementation-Vendor': 'App Vendor')
 }

Android {
compileSdkVersion 27
buildToolsVersion "27.0.3"

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 27
    consumerProguardFile file("proguard-project.txt")
}

buildTypes {
    debug {
        testCoverageEnabled true
    }
}

// work-around for duplicate files during packaging of APK
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation project(':exclude-doclet')
implementation 'com.Android.support:support-annotations:27.0.2'
implementation 'com.Android.support:support-v4:27.0.2'
implementation 'commons-io:commons-io:2.4'
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
implementation 'com.google.code.gson:gson:2.4'
implementation 'io.reactivex:rxandroid:1.2.1'
implementation 'io.reactivex:rxjava:1.1.7'
classpaths files(new File(System.getenv("Android_HOME") + "/platforms/Android-${Integer.parseInt(rootProject.Android_BUILD_SDK_VERSION)}/Android.jar"),
        new File(System.getenv("Android_HOME") + "/extras/Android/support/v4/Android-support-v4.jar"))
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'org.mockito:mockito-core:1.10.19'
}

Android.libraryVariants.all { variant ->
String name = variant.buildType.name
task("generate${name.capitalize()}Javadoc", type: Javadoc) {
    dependsOn variant.javaCompiler
    description "Generates Javadoc for $project.name."

    title "App $project.version"
    source = variant.javaCompiler.source
    classpath += project.files(variant.javaCompiler.classpath.files, Android.getBootClasspath())
    List<File> pathList = new ArrayList<File>()
    pathList.add(new File(project(':exclude-doclet').libsDir,
                          "ExcludeDoclet-${project(':exclude-doclet').version}.jar"))
    options {
        doclet = "ExcludeDoclet"
        docletpath = pathList
        encoding = "UTF-8"
        classpath = configurations.classpaths.files.asType(List)
        linksOffline "http://developer.Android.com/reference", "${Android.sdkDirectory}/docs/reference"
        links "http://docs.Oracle.com/javase/7/docs/api/",
              "http://square.github.io/retrofit/2.x/retrofit/",
              "http://square.github.io/okhttp/2.x/okhttp/",
              "http://reactivex.io/RxJava/javadoc/"
        memberLevel = JavadocMemberLevel.PUBLIC
        header = "AppKit"
    }
    exclude '**/BuildConfig.Java'
    exclude '**/R.Java'
    failOnError true

    doLast {
        copy {
            from 'src/javadoc/assets/'
            into destinationDir.path + '/assets/'
        }
    }
}

task("assemble${name.capitalize()}JavadocJar", type: Jar) {
    dependsOn "generate${name.capitalize()}Javadoc"
    description "Assembles Jar contaning Javadoc for $project.name."
    from project.tasks.getByName("generate${name.capitalize()}Javadoc").destinationDir
    classifier = 'javadoc'
    manifest {
        from sharedManifest
    }
}

task("assemble${name.capitalize()}Jar", type: Jar) {
    dependsOn variant.javaCompiler
    description "Assembles Jar contaning $project.name."
    from variant.javaCompiler.destinationDir
    manifest {
        from sharedManifest
    }
}

artifacts {
    archives project.tasks.getByName("assemble${name.capitalize()}Jar")
    archives project.tasks.getByName("assemble${name.capitalize()}JavadocJar")
}
}

Je suis coincé avec ce problème et ne trouve aucune solution. Quelqu'un peut m'aider.

12
Kapil Rajput

J'ai eu le même problème avec une autre bibliothèque que vous. Je pourrais résoudre cela en remplaçant cette ligne:

classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)

avec:

doFirst { classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) },

"Cela est dû au nouveau plugin Gradle lors de la mise à jour d'AndroidStudio qui entre en conflit avec le plugin JavaDoc", si vous avez une tâche Javadoc, vous devez pouvoir trouver la même ligne.

27
jatin kumar