É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'
nhoxbypass
la source
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
Copie
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

Être à
la source
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'
}
Un droïde
la source
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
     }
}
Dhaval Patel
la source
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!

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

Correction du problème en allant dans le répertoire principal et en tapant flutter clean

beeftosino
la source
1
Super, que faire si vous n'utilisez pas de flutter;)
Kevin Galligan
2
@KevinGalligan Ensuite, utilisez Flutter;)
Neveu de Stackoverflow
4

La suppression du testInstrumentationRunner a fonctionné pour moi:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
M. Usman Khan
la source
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.

pamobo0609
la source
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.

Raj
la source
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

Minh Pham
la source
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 ...

Dimitri de Jesus
la source
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.

ikhsanudinhakim
la source
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.

Pedro Molina
la source
0

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

Gab Ledesma
la source
-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!

Hanoch Moreno
la source
-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 .

Dan
la source