web-dev-qa-db-fra.com

L'API 'variant.getExternalNativeBuildTasks ()' est obsolète et a été remplacée par 'variant.getExternalNativeBuildProviders ()

Utilisation d'Android Studio 3.3 Canary 11 avec le plugin Gradle version 3.3.0-alpha11. Il lève l'erreur suivante en essayant de synchroniser le dégradé

WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been 
replaced with 'variant.getExternalNativeBuildProviders()'.
It will be removed at the end of 2019.
For more information, see https://d.Android.com/r/tools/task-configuration- 
avoidance
Affected Modules: app

En cliquant sur l'erreur, cela m'amène à cette ligne dans le fichier gradle

applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "${variant.name}-${variant.versionName}.apk"
            }
        }

De quoi ai-je besoin pour changer ici?

projet build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral() // jcenter() works as well because it pulls from Maven Central
        maven { url "https://maven.google.com" }
        google()
    }

    dependencies {
        classpath 'com.Android.tools.build:gradle:3.3.0-alpha11'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath "io.realm:realm-gradle-plugin:4.1.1"
        classpath 'com.google.gms:google-services:3.2.1'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
    }
}

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

task clean(type: Delete) {
    delete rootProject.buildDir
}

// Define versions in a single place
ext {
    // Sdk and tools
    minSdkVersion = 21
    targetSdkVersion = 27
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'

    // App dependencies
    supportLibraryVersion = '27.1.1'
    appCompactLibraryVersion = '27.1.1'
    playServicesVersion = '15.0.1'
    firebaseVersionCore = '16.0.1'
    firebaseVersionPerf = '16.0.0'
    firebaseVersionMessaging = '17.1.0'

    //lottie
    lottieVersion = '2.5.0'
}

application build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.25.4'
    }
    buildscript {
        repositories {
            maven { url "https://maven.google.com" }
            maven { url 'https://maven.fabric.io/public' }
            mavenCentral()

        }

        dependencies {
            // These docs use an open ended version so that our plugin
            // can be updated quickly in response to Android tooling updates

            // We recommend changing it to the latest version from our changelog:
            // https://docs.fabric.io/Android/changelog.html#fabric-gradle-plugin
            classpath 'io.fabric.tools:gradle:'
        }
    }
}
apply plugin: 'com.Android.application'
apply plugin: 'com.google.firebase.firebase-perf'
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

apply plugin: 'io.fabric'
apply plugin: 'realm-Android'

Android {

    realm {
        syncEnabled = false
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        applicationId "example.com"
        minSdkVersion rootProject.ext.minSdkVersion
        multiDexEnabled true
        versionCode mVersionCode
        versionName mVersionName
        vectorDrawables.useSupportLibrary = true

    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {

        applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "${variant.name}-${variant.versionName}.apk"
            }
        }

        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'

            lintOptions {
                disable 'MissingTranslation'
            }

            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.name}-${variant.versionName}.apk"
                }
            }

        }
        debug {
            shrinkResources true
            minifyEnabled true
            useProguard true
            debuggable true
            versionNameSuffix '-DEBUG'
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'debug-proguard-rules.pro'

            ext.enableCrashlytics = false
            crunchPngs false

        }
    }

    flavorDimensions "default"

    lintOptions {

        checkReleaseBuilds false

    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
    buildToolsVersion '28.0.2'
}

configurations {
    implementation.exclude group: "org.Apache.httpcomponents", module: "httpclient"
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.Android.support:appcompat-v7:$rootProject.appCompactLibraryVersion"
    implementation "com.Android.support:support-compat:$rootProject.supportLibraryVersion"
    implementation "com.Android.support:mediarouter-v7:$rootProject.supportLibraryVersion"
    implementation "com.Android.support:cardview-v7:$rootProject.supportLibraryVersion"
    implementation "com.Android.support:design:$rootProject.supportLibraryVersion"


    api 'com.squareup.retrofit2:retrofit:2.4.0'
    api 'com.squareup.okhttp3:okhttp:3.11.0'
    api 'com.squareup.okhttp3:logging-interceptor:3.10.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
    implementation 'com.Android.support:multidex:1.0.3'
    implementation 'com.daimajia.easing:library:2.0@aar'
    implementation 'com.daimajia.androidanimations:library:2.3@aar'

    implementation 'com.akexorcist:googledirectionlibrary:1.0.5'
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'io.reactivex:rxjava:1.3.0'
    // Wifi hotspot library
    implementation 'cc.mvdan.accesspoint:library:0.2.0'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
    implementation 'org.jsoup:jsoup:1.10.3'
    api "com.airbnb.Android:lottie:$rootProject.lottieVersion"
    implementation 'com.Android.support:support-v4:27.1.1'
    implementation 'com.Android.support:recyclerview-v7:27.1.1'
    testImplementation 'junit:junit:4.12'
    implementation 'com.jakewharton:butterknife:8.8.1'

    debugImplementation 'com.squareup.leakcanary:leakcanary-Android:1.5.4'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-Android-no-op:1.5.4'

    implementation 'com.googlecode.libphonenumber:libphonenumber:8.2.0'

    implementation "com.google.Android.gms:play-services-base:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-cast-framework:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-auth:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-identity:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-awareness:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-cast:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-drive:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-location:$rootProject.playServicesVersion"
    implementation "com.google.Android.gms:play-services-maps:$rootProject.playServicesVersion"

    implementation "com.google.firebase:firebase-core:$rootProject.firebaseVersionCore"
    implementation "com.google.firebase:firebase-perf:$rootProject.firebaseVersionPerf"
    implementation "com.google.firebase:firebase-messaging:$rootProject.firebaseVersionMessaging"
    implementation "com.google.firebase:firebase-analytics:$rootProject.firebaseVersionCore"


    api('com.crashlytics.sdk.Android:crashlytics:2.8.0@aar') {
        transitive = true
    }
    api('com.crashlytics.sdk.Android:answers:1.4.1@aar') {
        transitive = true
    }
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    api project(path: ':libraryBTHelper')
    api project(':bkk_Rush')

    debugApi 'com.amitshekhar.Android:debug-db:1.0.3'
    api "org.jdeferred:jdeferred-Android-aar:1.2.6"
    implementation 'com.Android.support:gridlayout-v7:27.1.1'
}

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

J'ai omis quelques constantes et autres informations sensibles dans le fichier app/build.gradle.

280
Jude Fernandes

Le problème a été corrigé dans leur dernière version 'io.fabric.tools:gradle:1.28.0'

Veuillez mettre à jour vos deux outils d’étoffes Gradle avec 1.28.0

buildscript {
  // ... repositories, etc. ...

   dependencies {
       // ...other dependencies ...
       classpath 'io.fabric.tools:gradle:1.28.0'
   }
}

Pour plus de détails https://github.com/firebase/firebase-Android-sdk/issues/198#issuecomment-473435453

178
0xAliHn

Cela se produit après avoir mis à jour Android Studio vers la version 3.3.0. apply plugin: 'io.fabric' est la cause. J'ai envoyé un rapport de bogue à l'équipe Firebase sur ce problème.

Vous avez 3 options:

  • Attendez la publication de la prochaine version du plug-in Fabric. Vérifiez la dernière version ici .

  • Déclassement à Android Studio 3.2.1 .

  • Commentez le plugin io.fabric.

Dans build.gradle du module de votre application:

apply plugin: 'com.Android.application'
// apply plugin: 'io.fabric' <== this plugin causes the error

Toutefois, vous pouvez toujours créer et exécuter vos projets même si cette erreur apparaît. N'y faites pas attention.

169
Anggrayudi H

dans l'application build.gradle, rétrogradez cette version stable de gradle:

classpath 'com.Android.tools.build:gradle:3.2.1'

Cela se produit après avoir mis à jour Android Studio vers la version 3.3, solution temporaire, jusqu'à ce qu'ils le corrigent!

edit: vous n'avez pas besoin de rétrograder votre studio Android!

53
Amer Al Ziebak

Vous ne savez pas quel est le problème, mais commentez les dépendances liées au problème résolues par le projet.

13
Jude Fernandes

Si le commentaire du plugin Crashlytics du io.fabric sur le fichier de graduation de l'application a fonctionné temporairement 

//apply plugin: 'io.fabric'

Ensuite, la mise à niveau de vos dépendances de niveaux de tissu sur le fichier de niveaux de projet résoudra définitivement le problème:

classpath 'io.fabric.tools:gradle:1.27.0'

NB: cela ne supprime pas les avertissements mais vous permet d’utiliser Crashlytics avec AS3.3 +

11
113408

C'est un bogue confirmé pour Crashlytics et ils y travaillent.

https://issuetracker.google.com/issues/116408637

Cité par le destinataire de Google:

je ... @ google.com # 23 23 janv. 2019 01:40
Salut à tous,

Merci pour votre patience.

Il semble que le bogue dans tous les cas provient de crashlytics et j'ai déposé un bug avec eux.

Je vous tiendrai au courant du statut.

Pour moi, mon application de débogage fonctionne correctement sur mon appareil simplement en exécutant et en ignorant l'avertissement sans commenter Crashlytics ou Fabric. Je n'ai pas essayé de produire.

Mettre à jour:

Google Issue Tracker avait marqué ce problème en tant que Wont not Fix (Infeasible) car tous les problèmes provenaient de Crashlytics, et ont laissé les corrections effectuées par l'équipe de Crashlytics (bien qu'ils soient identiques à ceux de Google ...).

Ils suggèrent de suivre ce lien pour les mises à jour de Crashlytics:

https://github.com/firebase/firebase-Android-sdk/issues/198

Remarque: j'utilise toujours Android Studio 3.3 avec io.fabric.tools:gradle:1.26.0 sans commenter aucun de Craslytics et cela fonctionne correctement sur mon application de débogage. 

10
Ryde

Dernières nouvelles du 24/01/2019

 enter image description here

Infos ici https://issuetracker.google.com/issues/116408637

Nous aurons besoin d'attendre jusqu'à ce que Crashlytics propose une solution, voici le numéro de GitHub ouvert

https://github.com/firebase/firebase-Android-sdk/issues/198

Le seul moyen que j'utilise actuellement pour ne pas commenter le plug-in io.fabric est de rétrograder mon dégradé et de mettre à niveau mon classpath fabric (cela fonctionne sur mon application de production).

 dependencies {
        classpath 'com.Android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'io.fabric.tools:gradle:1.27.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
8
Gastón Saillén

Comme il a été dit, le problème vient de Fabric/Crashlytics.

apply plugin: 'io.fabric'

C’est un bogue du côté de Crashlytics/Firebase, veuillez vérifier le lien suivant et consulter le statut du bogue: https://github.com/firebase/firebase-Android-sdk/issues/198

3
Trinity

Cela est dû à la mise à jour de votre Android Studio d'Android Studio 3.2.0 vers Android Studio 3.3.0. Mettez à jour vos dépendances (projet) d'IO.Fabric. Comme:

classpath 'io.fabric.tools:gradle:1.27.1'

et mettez également à jour votre version de Kotlin vers

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20"

Cela résoudra ces problèmes. Merci

2
RAHUL

le suivi des problèmes peut faire référence à "configuration de tâches paresseuses" -

c'est au moins ce que tâche évite la configuration suggère.

mais on peut éventuellement empêcher l’accès à cette méthode obsolète de BaseVariantImpl, lorsque variant.outputs.all n’aura pas accès à cette méthode (en interne) - ou lorsque des contrôles pourront empêcher l’accès; ou lors de l'accès à la variante par son nom; ou en quelque sorte désactiver les tâches de génération natives externes pour la variante. voir aussi l'option single-variant project sync , qui semble plutôt liée. 

ou attendez build-tools3.3.0-alpha12 ou 3.3.0-beta1 ... ce n'est même pas un release candidate; par conséquent, investir trop de temps peut être inutile - à part l'utiliser pour enregistrer un autre rapport de bogue.

le nouveau retour rapide quick feedback Le bouton semble toujours le plus prometteur.

2
Martin Zeitler

Le journal de construction indique comment déboguer cela, en particulier si vous avez besoin de construire avec -Pandroid.debug.obsoleteApi=true, cela imprimera la trace de pile de l'appel de l'API obsolète et vous pourrez déterminer quel plugin/code l'appelle.

S'il finit par être votre code - utilise la nouvelle API de fournisseur ( lit la documentation de Lazy Task Configuration )

S'il provient d'un autre plugin - leur signaler avec un message de trace de pile et d'avertissement et éventuellement soumettre un correctif. Comme dans ce cas, il est lié à la question io.fabric.

1
0xalihn

Pour moi, j'ai suivi les étapes suivantes: 1. Mettez à niveau la dépendance Gradle sur build.gradle au niveau du projet.

        classpath 'io.fabric.tools:gradle:1.28.0'
  1. ajoutez cette dépendance de plugin en dessous de apply plugin: 'com.Android.application' dans le build.gradle du niveau de l'application.

        apply plugin: 'io.fabric'
    
  2. Synchronisez le projet avec des fichiers Gradle.

1
amit pandya

Dans mon cas, je devais utiliserio.fabricplugin, et la solution consistait à mettre à jour vers la dernière version de Gradle Tools Fabric:

classpath 'com.Android.tools.build:gradle:3.3.0'
classpath 'io.fabric.tools:gradle:1.27.0'
0
Fragment

Le correctif consiste à mettre à jour les fichiers de niveau de génération racine au plus tard. Et cette réponse est vraie maintenant. Dans fureture à nouveau, de nouveaux changements seront mis en œuvre par gradle et Android SDK. Parfois, la réponse variera avec le temps.

repositories {
    maven { url "https://jitpack.io" }
    maven {
        url 'https://maven.fabric.io/public'
    }
    google()
    jcenter()

}
dependencies {

    classpath 'com.Android.tools.build:gradle:3.5.0'
    classpath 'com.google.gms:google-services:4.3.0'
    classpath 'io.fabric.tools:gradle:1.30.0'
}
0
Pavan

Pour ceux qui ont besoin de garder le plugin Fabric appliqué, la solution temporaire consiste à revenir à la version précédente du dégradé au niveau projet.

Changez la version du chemin de classe en com.Android.tools.build:gradle:3.2.1.

0
Henrique Monte

Je ne pouvais pas non plus démarrer le projet après la mise à jour d'Android Studio. Mais après la suppression de .gradle, .idea, la création de dossiers et la réimportation du projet, tout a fonctionné, mais l'avertissement persiste.

0
Vladyslav Panchenko

Changer la compatibilité de la source dans le fichier du module build.gradle vers Java 8 résout le problème

compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
}

Assurez-vous de reconstruire le projet après avoir ajouté ces lignes

0
Petar

C'était un problème avec la dernière version gradle (dans mon cas, 3.3.2) et le plugin Fabric.io. Il est maintenant résolu par la nouvelle version. Les utilisateurs devraient avoir ceci dans leur build.gradle de niveau supérieur:

buildscript {
   // ... repositories, etc. ...

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.28.0'
    }
}
0
Mohammad

cela va corriger l'erreur: Dans la barre des tâches, cliquez sur Outils-> Kotlin-> Configurer Kotlin dans le projet

0
Sadjad Abbasnia

Lorsque j'ai ouvert le projet, j'ai appuyé sur le bouton Run migrations apparaissant dans le coin inférieur droit de Android Studio. Une migration a été effectuée et le problème a été résolu sans commenter la dépendance Crashlytics.

 enter image description here

0
pableiros