Échec de la résolution de la variable «$ {animal.sniffer.version}» lors de la migration vers AndroidX


138

J'utilise Android Studio 3.2 Beta5 pour migrer mon projet vers AndroidX . Lorsque je reconstruis mon application, j'ai ces erreurs:

ERREUR: [TAG] Échec de la résolution de la variable '$ {animal.sniffer.version}'

ERREUR: [TAG] Échec de la résolution de la variable '$ {junit.version}'

Le nettoyage et la reconstruction complets n'ont pas fonctionné! Quelqu'un sait comment réparer ceci?


gradle.properties

android.enableJetifier=true
android.useAndroidX=true

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-beta05'

        classpath 'com.google.gms:google-services:4.0.1'
        classpath "io.realm:realm-gradle-plugin:5.3.1"
        classpath 'io.fabric.tools:gradle:1.25.4'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
}

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

app / build.gradle

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.0"
    defaultConfig {
        applicationId "com.iceteaviet.fastfoodfinder"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    aaptOptions {
        cruncherEnabled = false
    }
}

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

    implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'

    implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
    implementation 'com.google.android.material:material:1.0.0-rc01'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0-rc01'
    implementation 'androidx.cardview:cardview:1.0.0-rc01'

    implementation 'com.google.maps.android:android-maps-utils:0.5'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-auth:15.0.1'

    implementation 'com.github.bumptech.glide:glide:4.7.1'

    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

    implementation 'org.greenrobot:eventbus:3.1.1'

    implementation 'de.hdodenhof:circleimageview:2.2.0'

    implementation 'io.realm:realm-android-library:5.3.1'

    implementation 'com.facebook.android:facebook-android-sdk:4.34.0'

    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.0.2'

    implementation 'androidx.multidex:multidex:2.0.0'

    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
    implementation 'com.google.firebase:firebase-perf:16.0.0'

    implementation 'com.jakewharton.timber:timber:4.7.1'

    annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

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

Des progrès ici?
Chad Bingham

@ChadBingham Non, c'est toujours la même erreur
nhoxbypass

Enfin trouvé la solution, veuillez trouver la réponse ici: stackoverflow.com/a/52308912/10224384
Nabster


5
@Nabster hé hé ma question a été postée il y a un mois alors que cette question a été postée il y a 20 heures!
nhoxbypass

Réponses:


108

Je corrige cela en deux étapes

1) Fichier -> Invalider les caches / redémarrer ... entrez la description de l'image ici

2) Construire -> Projet propre entrez la description de l'image ici


4
Cela a fonctionné pour quelques reconstructions, mais je reçois à nouveau la même erreur maintenant ..
Al Cabone

2
pour moi Clean Project ont été juste assez
f4bo

1
Clean Project était également tout ce qu'il fallait pour moi. Merci @ f4bo pour le tuyau.
John Bentley

1
Ça marche. Je nettoie seulement le projet. Cette réponse doit être définie comme réponse acceptée. @nhoxbypass
azwar_akbar

30

J'ai eu la même erreur après la mise à jour de mon fichier build.gradle avec les dépendances AndroidX Test . Il s'avère que j'ai oublié de supprimer l'ancienne dépendance junit. Donc, pour moi, le correctif consistait simplement à supprimer la dépendance suivante:

dependencies {
    ...
    testImplementation 'junit:junit:4.12'
}

C'était le problème pour moi.
Brill Pappin

Ouais l'a corrigé. J'ai rencontré le problème avec le jeu de devinettes du cours Udacity Kotlin
Aswin Mohan

Pouvez-vous expliquer pourquoi c'est le cas?
Riz-waan

17

L'ajout de la prise en charge de Java 8 au fichier build.gradle a résolu un problème pour moi

android {
     ...

     //Add the following configuration in order to target Java 8.
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
}

leanback introuvable. Je construis une application TV et ça passe au rouge sur tout ce qui concerne le support leanback v17
ralphgabb

1
invalider les caches et redémarrer android studio
Dhaval Patel

3
non ce n'est pas, j'ai pensé que vous deviez utiliser le package androidx.
ralphgabb

Je suppose que l'ajout de la prise en charge de Java 8 oblige Android Studio à invalider ses caches et obtient ainsi le même résultat qu'un effet secondaire ... Hmmmm, d'accord ...
varun

14

Il semble que Glide soit le problème.

J'ai eu la même erreur et je viens de mettre à jour les dépendances de Glide à 4.8 et il n'y a pas d'erreurs de construction.

Kotlin:

// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
kapt "com.github.bumptech.glide:compiler:$glide_version"

Java:

// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"

Assurez-vous d'avoir activé dans votre gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Source: https://github.com/bumptech/glide/issues/3124

J'espère que ceci vous aidera!


9
Cette erreur m'apparaît également sans avoir Glide comme dépendance
Fabian Streitel


4

La suppression du testInstrumentationRunner a fonctionné pour moi:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

solution fantastique! Corrigé pour moi
beastlyCoder

4

Si vous utilisez Kotlin, le problème apparaîtra si vous n'utilisez pas la kaptversion d'un processeur d'annotation que vous utilisez dans le projet.
Comme @Vince mentionné le cas Glide, cela pourrait se produire avec Dagger2, Butterknifeetc.
Si vous utilisez à la fois Javaet Kotlinvous devez garder les deux dépendances, comme suit (était $glideVersionune version prédéfinieGlide ):

implementation "com.github.bumptech.glide:glide:$glideVersion"

kapt "com.github.bumptech.glide:compiler:$glideVersion"

Si vous êtes sur un Kotlinseul projet, lekapt dépendance devrait fonctionner seule.

EDIT
Une autre chose que vous devriez avoir à l'esprit est si vous utilisez déjà Androidx. Androidxest un excellent refactor, mais lors de la migration, il peut entraîner la réduction de certaines de vos dépendances. Les bibliothèques traditionnelles sont déjà mises à jour Androidx, mais certaines ne le sont pas et ne le seront même pas.
Si le problème ne disparaît pas avec la solution fournie au-dessus de cette modification, vous pouvez jeter un œil à vos dépendances et vous assurer qu'elles utilisentAndroidx également.

EDIT 2
Comme @Ted l'a mentionné, j'ai fait des recherches et il a raison kaptgère également les javafichiers. kaptseul fera l'affaire, pas besoin de garder les deux kaptet les annotationProcessordépendances.


1
kapt peut également gérer les fichiers java, donc pas besoin de les utiliser tous les deux, seul kapt est OK.
Ted

3

Essayez de supprimer cette ligne:

maven { url "https://oss.sonatype.org/content/repositories/snapshots" }

à partir de la section buildscript / repositories de votre fichier build.gradle.

Quand j'ai ajouté cette ligne, j'ai eu l'erreur que vous avez décrite. Quand je l'ai enlevé, plus. Cette ligne ne doit figurer que dans la section allprojects / repositories.


1
Je crois que Jake Wharton a déjà ajouté la prise en charge d'AndroidX dans l'instantané 9.0.0. Voir: github.com/JakeWharton/butterknife/issues/1280
nhoxbypass

2

Essayez de définir android.enableJetifier = false dans gradle.properties. Puis invalider les caches / redémarrer ... dans Android Studio


8
Ce n'est pas recommandé car il pourrait y avoir des bibliothèques tierces qui n'ont pas encore été mises à niveau vers AndroidX! Comme le dit la documentation: "android.enableJetifier: lorsqu'il est défini sur true, le plug-in Android migre automatiquement les bibliothèques tierces existantes pour utiliser AndroidX en réécrivant leurs binaires. L'indicateur est false par défaut s'il n'est pas spécifié." developer.android.com/jetpack/androidx
Gábor Horváth

1

Le correctif est dans 4.2.0, utilisez la version supérieure de google gms jar.

Essayez de changer:

classpath 'com.google.gms: google-services: 4.0.1'

par cette version:

classpath 'com.google.gms: google-services: 4.2.0'

J'espère que cela fonctionne ...


1
Cela a fonctionné pour moi avec la mise à jour des dépendances.
glisu

1

Si vous utilisez un poignard ou un couteau à beurre, assurez-vous de le mettre à jour avec la dernière version. Ou, si vous avez une autre bibliothèque d'injection utilisée dans votre projet, vous pouvez essayer de la vérifier si elle prend en charge androidx ou non.

J'ai trouvé la même erreur, le problème est sur mon poignard et mon couteau à beurre. Je l'ai corrigé en le mettant à jour vers la dernière version.


1

Version Android: 4.10.2

J'ai résolu ce problème en trois étapes simples: J'ai d'abord ajouté ci-dessous ceci dans pubspec.yml: (avec deux espaces d'identification)

module:
  androidX: true 

En ajoutant ces deux lignes ci-dessous dans gradle.properties, je l'ai dans android / gradle.properties, dans le dossier du projet.

android.useAndroidX=true
android.enableJetifier=true

Et après cela, j'ai écrit avec le terminal:

flutter clean

Vous devrez peut-être arrêter l'appareil et le relancer.


0

J'ai résolu ce problème en mettant à jour les dépendances de Firebase au plus tard.


-1

Je l'ai corrigé en rafraîchissant le cahche (au lieu de l'invalider - ce qui efface également l'histoire locale):

  1. dans le fichier gradle.properties, commentez la ligne org.gradle.caching = true.
  2. Nettoyez, reconstruisez.
  3. dans le fichier gradle.properties, annulez le commentaire de la ligne org.gradle.caching = true.
  4. Nettoyez, reconstruisez.

C'est tout!


-1

Accédez au fichier et cliquez sur Invalidate caches et redémarrez.

Après le redémarrage, vous augmentez la version minimale du SDK dans le build.gradlefichier de votre application .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.