Fehler beim Auflösen der Variablen '$ {animal.sniffer.version}' bei der Migration auf AndroidX

137

Ich verwende Android Studio 3.2 Beta5 , um mein Projekt auf AndroidX zu migrieren . Beim Neuerstellen meiner App wurden folgende Fehler angezeigt:

FEHLER: [TAG] Fehler beim Auflösen der Variablen '$ {animal.sniffer.version}'

FEHLER: [TAG] Fehler beim Auflösen der Variablen '$ {junit.version}'

Vollständig sauber & Wiederaufbau hat nicht funktioniert! Weiß jemand, wie man das behebt?


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
quelle
Irgendwelche Fortschritte hier?
Chad Bingham
@ChadBingham Nein, es ist immer noch der gleiche Fehler
nhoxbypass
Endlich die Lösung gefunden, finden Sie die Antwort hier: stackoverflow.com/a/52308912/10224384
Nabster
Mögliches Duplikat von stackoverflow.com/questions/52294319/…
Nabster
5
@Nabster hey hey meine Frage wurde vor einem Monat gepostet, während diese Frage vor 20 Stunden gepostet wurde!
nhoxbypass

Antworten:

108

Ich behebe das mit zwei Schritten

1) Datei -> Caches ungültig machen / neu starten ... Geben Sie hier die Bildbeschreibung ein

2) Erstellen -> Projekt bereinigen Geben Sie hier die Bildbeschreibung ein

Sein, um
quelle
4
Irgendwie hat es für ein paar Umbauten funktioniert, aber ich
bekomme
2
Für mich war Clean Project gerade genug
f4bo
1
Auch Clean Project war alles, was für mich erforderlich war. Danke @ f4bo für den Tipp.
John Bentley
1
Es klappt. Ich reinige nur Projekt. Diese Antwort sollte als akzeptierte Antwort festgelegt werden. @nhoxbypass
azwar_akbar
30

Ich habe den gleichen Fehler erhalten, nachdem ich meine build.gradle-Datei mit AndroidX- Testabhängigkeiten aktualisiert habe . Es stellte sich heraus, dass ich vergessen habe, die alte Junit-Abhängigkeit zu entfernen. Für mich bestand die Lösung einfach darin, die folgende Abhängigkeit zu entfernen:

dependencies {
    ...
    testImplementation 'junit:junit:4.12'
}
Ein Droide
quelle
Das war das Problem für mich.
Brill Pappin
Ja, es wurde behoben. Ich bin auf das Problem mit dem Udacity Kotlin-Kurs gestoßen. Errate es
Aswin Mohan,
Könnten Sie bitte erklären, warum dies der Fall ist?
Riz-waan
17

Das Hinzufügen von Java 8-Unterstützung zur build.gradle- Datei hat das Problem für mich behoben

android {
     ...

     //Add the following configuration in order to target Java 8.
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
}
Dhaval Patel
quelle
Leanback nicht gefunden. Ich baue eine TV-App und es wird rot auf alles in Bezug auf Leanback-Unterstützung v17
ralphgabb
1
Caches ungültig machen und Android Studio neu starten
Dhaval Patel
3
nein es ist nicht, ich dachte du musst das androidx paket benutzen.
Ralphgabb
Ich denke, das Hinzufügen von Java 8-Unterstützung zwingt Android Studio, seine Caches ungültig zu machen, und erzielt somit das gleiche Ergebnis wie ein Nebeneffekt ... Hmmmm, in Ordnung ...
varun
14

Es scheint Glide das Problem zu sein.

Ich hatte den gleichen Fehler und habe gerade die Abhängigkeiten des Glide auf 4.8 aktualisiert, und es gibt keine Build-Fehler.

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"

Stellen Sie sicher, dass in gradle.properties Folgendes aktiviert ist:

android.useAndroidX=true
android.enableJetifier=true

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

Hoffe das wird dir helfen!

Vince
quelle
9
Dieser Fehler erscheint mir auch ohne Glide als Abhängigkeit
Fabian Streitel
6

Es wurde behoben, indem zum Hauptverzeichnis gewechselt und eingegeben wurde flutter clean

Beeftosino
quelle
1
Großartig, was ist, wenn Sie kein Flattern verwenden;)
Kevin Galligan
2
@ KevinGalligan Dann benutze Flutter;)
Neffe von Stackoverflow
4

Das Entfernen des testInstrumentationRunner hat bei mir funktioniert:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
M. Usman Khan
quelle
fantastische Lösung! Es wurde für mich
behoben
4

Wenn Sie verwenden Kotlin, wird das Problem angezeigt, wenn Sie die kaptVersion nicht für einen im Projekt verwendeten Anmerkungsprozessor verwenden.
Wie @Vince den Fall erwähnt mit Glide, dies mit passieren könnte Dagger2, Butterknifeusw.
Wenn Sie beide verwenden Javaund KotlinSie werden beide Abhängigkeiten halten müssen, wie folgt (waren $glideVersioneine vordefinierte Version Glide):

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

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

Wenn Sie sich in einem Kotlineinzigen Projekt befinden, sollte die kaptAbhängigkeit alleine funktionieren.

BEARBEITEN
Eine andere Sache, die Sie beachten sollten, ist, wenn Sie bereits verwenden Androidx. Androidxist ein großartiger Refactor, aber bei der Migration können einige Ihrer Abhängigkeiten zusammenbrechen. Mainstream-Bibliotheken sind bereits aktualisiert Androidx, einige jedoch nicht und sogar nicht.
Wenn das Problem mit meiner über dieser Bearbeitung bereitgestellten Lösung nicht behoben wird, können Sie sich Ihre Abhängigkeiten ansehen und sicherstellen, dass sie auch verwendet Androidxwerden.

EDIT 2
Wie @Ted erwähnt hat, habe ich zurück recherchiert und er hat Recht, kaptauch mit javaDateien umzugehen . kaptallein reicht aus, es ist nicht erforderlich, beide kaptund annotationProcessorAbhängigkeiten beizubehalten.

pamobo0609
quelle
1
kapt kann auch Java-Dateien verarbeiten, sodass nicht beide verwendet werden müssen. Nur kapt ist in Ordnung.
Ted
3

Versuchen Sie, diese Zeile zu entfernen:

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

aus dem Abschnitt "Buildscript / Repositorys" Ihrer build.gradle-Datei.

Als ich diese Zeile hinzugefügt habe, habe ich den von Ihnen beschriebenen Fehler erhalten. Als ich es entfernte, nicht mehr. Diese Zeile sollte sich nur im Abschnitt allprojects / repositories befinden.

Raj
quelle
1
Ich glaube, Jake Wharton hat bereits Unterstützung für AndroidX in 9.0.0 Snapshot hinzugefügt. Siehe: github.com/JakeWharton/butterknife/issues/1280
nhoxbypass
2

Versuchen Sie, android.enableJetifier = false in gradle.properties zu setzen. Dann Caches ungültig machen / neu starten ... in Android Studio

Minh Pham
quelle
8
Es wird nicht empfohlen, da es Bibliotheken von Drittanbietern geben kann, die noch nicht auf AndroidX aktualisiert wurden! In der Dokumentation heißt es: "android.enableJetifier: Wenn der Wert auf" true "gesetzt ist, migriert das Android-Plugin vorhandene Bibliotheken von Drittanbietern automatisch zur Verwendung von AndroidX, indem die Binärdateien neu geschrieben werden. Das Flag ist standardmäßig" false ", wenn es nicht angegeben wird." developer.android.com/jetpack/androidx
Gábor Horváth
1

Das Update ist in 4.2.0, verwenden Sie die höhere Version von Google GMS Jar.

Versuchen Sie zu ändern:

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

von dieser Version:

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

Hoffe das funktioniert ...

Dimitri de Jesus
quelle
1
Dies funktionierte für mich zusammen mit der Aktualisierung von Abhängigkeiten.
Glisu
1

Wenn Sie Dolch oder Buttermesser verwenden, aktualisieren Sie es bitte auf die neueste Version. Wenn in Ihrem Projekt eine andere Injektionsbibliothek verwendet wird, können Sie versuchen, zu überprüfen, ob Androidx unterstützt wird oder nicht.

Ich habe den gleichen Fehler gefunden, das Problem liegt an meinem Dolch und Buttermesser. Habe es behoben, indem ich es auf die neueste Version aktualisiert habe.

ikhsanudinhakim
quelle
1

Android-Version: 4.10.2

Ich habe dieses Problem mit drei einfachen Schritten gelöst: Zuerst habe ich in pubspec.yml Folgendes hinzugefügt: (mit zwei Identifikationsräumen)

module:
  androidX: true 

Wenn ich diese beiden Zeilen unten in gradle.properties hinzufüge, habe ich dies in android / gradle.properties im Projektordner.

android.useAndroidX=true
android.enableJetifier=true

Und danach schrieb ich mit dem Terminal:

flutter clean

Möglicherweise müssen Sie das Gerät anhalten und erneut ausführen.

Pedro Molina
quelle
0

Ich habe dies behoben, indem ich die Firebase-Abhängigkeiten auf den neuesten Stand gebracht habe.

Gab Ledesma
quelle
-1

Ich habe es behoben, indem ich die Cahche aktualisiert habe (anstatt sie ungültig zu machen - wodurch auch die lokale Geschichte gelöscht wird):

  1. Kommentieren Sie in der Datei gradle.properties die Zeile org.gradle.caching = true.
  2. Sauber, wieder aufbauen.
  3. Deaktivieren Sie in der Datei gradle.properties die Zeile org.gradle.caching = true.
  4. Sauber, wieder aufbauen.

Das ist es!

Hanoch Moreno
quelle
-1

Gehen Sie zur Datei und klicken Sie auf Caches ungültig machen und neu starten.

Nach dem Neustart erhöhen Sie die minimale SDK-Version in der build.gradleDatei Ihrer App .

Dan
quelle