Impossibile risolvere la variabile '$ {animal.sniffer.version}' durante la migrazione ad AndroidX


138

Sto usando Android Studio 3.2 Beta5 per migrare il mio progetto su AndroidX . Quando ho ricostruito la mia app ho ricevuto questi errori:

ERRORE: [TAG] Impossibile risolvere la variabile '$ {animal.sniffer.version}'

ERRORE: [TAG] Impossibile risolvere la variabile '$ {junit.version}'

Completa pulizia e ricostruzione non ha funzionato! Qualcuno sa come risolvere questo?


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'

Qualche progresso qui?
Chad Bingham,

@ChadBingham No, sarà sempre lo stesso errore
nhoxbypass

Finalmente ho trovato la soluzione, si prega di trovare la risposta qui: stackoverflow.com/a/52308912/10224384
Nabster


5
@Nabster hey hey la mia domanda è stata pubblicata un mese fa mentre questa domanda è stata pubblicata 20 ore fa!
nhoxbypass,

Risposte:


108

Lo risolvo con due passaggi

1) File -> Cache non valide / riavvio ... inserisci qui la descrizione dell'immagine

2) Build -> Clean project inserisci qui la descrizione dell'immagine


4
In qualche modo ha funzionato per un paio di ricostruzioni, ma ora sto ottenendo di nuovo lo stesso errore ..
Al Cabone,

2
per me il progetto pulito è stato appena sufficiente
f4bo

1
Anche Clean Project era tutto ciò che mi serviva. Grazie @ f4bo per l'informazione.
John Bentley,

1
Funziona. Pulisco solo il progetto. Questa risposta dovrebbe essere impostata come risposta accettata. @nhoxbypass
azwar_akbar

30

Ho avuto lo stesso errore dopo aver aggiornato il mio file build.gradle con dipendenze di AndroidX Test . Ho scoperto che ho dimenticato di rimuovere la vecchia dipendenza junit. Quindi per me, la correzione era semplicemente quella di rimuovere la seguente dipendenza:

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

Questo è stato il problema per me.
Brill Pappin,

Sì, l'ho risolto. Mi sono imbattuto nel problema con il corso Udacity Kotlin indovinandolo gioco
Aswin Mohan

Potresti spiegare perché questo è il caso?
Riz-waan,

17

Aggiunta del supporto Java 8 al problema risolto del file build.gradle per me

android {
     ...

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

inclinazione non trovata. sto costruendo un'app TV e diventa rossa su tutto ciò che riguarda il supporto leanback v17
ralphgabb

1
invalidare le cache e riavviare Android Studio
Dhaval Patel

3
no non lo è, ho pensato che dovessi usare il pacchetto androidx.
ralphgabb,

Suppongo che l'aggiunta del supporto Java 8 imponga ad Android Studio di invalidare la cache e quindi ottenere lo stesso risultato di un effetto collaterale ... Hmmmm, va bene ...
Varun,

14

Sembra essere il problema Glide .

Ho avuto lo stesso errore e ho appena aggiornato le dipendenze di Glide a 4.8 e non ci sono errori di compilazione.

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"

Assicurati di aver abilitato in gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

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

Spero che questo ti possa aiutare!


9
Questo errore mi appare anche senza Glide come dipendenza
Fabian Streitel,


4

Rimozione del testInstrumentationRunner ha funzionato per me:

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

soluzione fantastica! Risolto il problema per me
beastlyCoder

4

Se stai usando Kotlin, il problema si aprirà se non usi la kaptversione per qualsiasi processore di annotazioni che usi nel progetto.
Come indicato da @Vince con il caso Glide, ciò potrebbe accadere con Dagger2, Butterknifeecc.
Se si utilizzano entrambi Javae Kotlinè necessario mantenere entrambe le dipendenze, come indicato di seguito (in cui $glideVersionè una versione predefinita di Glide):

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

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

Se sei su un Kotlinunico progetto, la kaptdipendenza dovrebbe funzionare da sola.

MODIFICA
Un'altra cosa che dovresti tenere a mente è se stai già utilizzando Androidx. Androidxè un ottimo refattore ma durante la migrazione può causare il collasso di alcune dipendenze. Le librerie mainstream sono già state aggiornate Androidx, tuttavia alcune non lo sono e nemmeno lo faranno.
Se il problema non si risolve con la soluzione fornita sopra questa modifica, puoi dare un'occhiata alle tue dipendenze e assicurarti che vengano utilizzate Androidxanche.

EDIT 2
Come accennato da @Ted, ho cercato di nuovo e ha ragione kaptanche a gestire i javafile. kaptda solo farà il trucco, non c'è bisogno di mantenere entrambe kapte le annotationProcessordipendenze.


1
kapt può anche gestire file java, quindi non è necessario usarli entrambi, solo Kapt è OK.
Ted

3

Prova a rimuovere questa riga:

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

dalla sezione buildscript / repository del tuo file build.gradle.

Quando ho aggiunto quella riga, ho ricevuto l'errore che hai descritto. Quando l'ho rimosso, non più. Tale riga dovrebbe trovarsi solo nella sezione tutti i progetti / repository.


1
Credo che Jake Wharton abbia già aggiunto il supporto per AndroidX nell'istantanea 9.0.0. Vedi: github.com/JakeWharton/butterknife/issues/1280
nhoxbypass

2

Prova a impostare android.enableJetifier = false in gradle.properties. Quindi cache / riavvio non validi ... in Android Studio


8
Non è raccomandato poiché potrebbero esserci librerie di terze parti che non sono ancora state aggiornate ad AndroidX! Come dice la documentazione: "android.enableJetifier: se impostato su true, il plug-in Android migra automaticamente le librerie di terze parti esistenti per utilizzare AndroidX riscrivendo i loro binari. Il flag è falso per impostazione predefinita se non è specificato." developer.android.com/jetpack/androidx
Gábor Horváth

1

La correzione è nella 4.2.0, usa la versione più alta di google gms jar.

Prova a cambiare:

percorso di classe "com.google.gms: google-services: 4.0.1"

con questa versione:

percorso di classe "com.google.gms: google-services: 4.2.0"

Spero che funzioni ...


1
Questo ha funzionato per me insieme all'aggiornamento delle dipendenze.
glisu,

1

Se stai usando un coltello o un pugnale, assicurati di aggiornarlo all'ultima versione. Oppure, se hai un'altra libreria di iniezione utilizzata nel tuo progetto, puoi provare a controllarlo se supporta androidx o no.

Ho trovato lo stesso errore, il problema è sul mio pugnale e sul mio coltello da burro. L'ho risolto aggiornandolo alla versione più recente.


1

Versione Android: 4.10.2

Ho risolto questo problema con tre semplici passaggi: per prima cosa ho aggiunto di seguito in pubspec.yml: (con due spazi di identificazione)

module:
  androidX: true 

Aggiungendo queste due righe di seguito in gradle.properties, ho questo in android / gradle.properties, nella cartella del progetto.

android.useAndroidX=true
android.enableJetifier=true

E dopo questo ho scritto con il terminale:

flutter clean

Forse dovrai arrestare il dispositivo ed eseguire di nuovo.


0

Ho risolto questo problema aggiornando le dipendenze firebase all'ultima.


-1

L'ho risolto aggiornando il cahche (invece di invalidarlo - che cancella anche la storia locale):

  1. nel file gradle.properties, commentare la riga org.gradle.caching = true.
  2. Pulito, ricostruisci.
  3. nel file gradle.properties, annullare il commento della riga org.gradle.caching = true.
  4. Pulito, ricostruisci.

Questo è tutto!


-1

Vai al file e fai clic su Cache non valide e riavvia.

Dopo il riavvio, aumenta la versione minima dell'SDK nel build.gradlefile dell'app .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.