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'

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


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


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'
}

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
     }
}

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!


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


4

Das Entfernen des testInstrumentationRunner hat bei mir funktioniert:

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

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.


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.


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


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 ...


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.


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.


0

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


-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!


-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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.