Не вдалося вирішити змінну '$ {animal.sniffer.version}' під час переходу на AndroidX


138

Я використовую Android Studio 3.2 Beta5 для переміщення свого проекту на AndroidX . Під час відновлення програми я отримав ці помилки:

ПОМИЛКА: [TAG] Не вдалося вирішити змінну '$ {animal.sniffer.version}'

ПОМИЛКА: [TAG] Не вдалося вирішити змінну '$ {junit.version}'

Повна чистка та відновлення не спрацювала! Хтось знає, як це виправити?


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'

Якийсь прогрес тут?
Чад Бінгем

@ChadBingham Ні, це все одно буде та сама помилка
nhoxbypass

Нарешті знайшов рішення, будь ласка , знайти відповідь тут: stackoverflow.com/a/52308912/10224384
Nabster

Можливий дублікат stackoverflow.com/questions/52294319 / ...
Nabster

5
@Nabster hey hey моє запитання було розміщено місяць тому, поки це питання було розміщено 20 годин тому!
nhoxbypass

Відповіді:


108

Я це виправляю двома кроками

1) Файл -> Недійсний кеш / перезапуск ... введіть тут опис зображення

2) Побудувати -> Очистити проект введіть тут опис зображення


4
Якось працював для декількох перебудов, але я знову отримую ту ж помилку ..
Аль Кабон,

2
для мене Clean Project було достатньо
f4bo

1
Також проект «Чистий» був для мене все, що потрібно. Дякую @ f4bo за пораду.
Джон Бентлі

1
Це працює. Я лише чистий проект. Цю відповідь слід встановити як прийняту відповідь. @nhoxbypass
azwar_akbar

30

Я отримав таку ж помилку після оновлення файлу build.gradle залежно від тесту AndroidX . Виявляється, я забув зняти стару залежність від юніту. Тому для мене виправлення полягало в тому, щоб просто усунути таку залежність:

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

Це було для мене проблемою.
Брілл

Так виправили. Я зіткнувся з проблемою з курсом Udacity Kotlin здогадайся, що гра
Асвін Мохан

Чи можете ви поясніть, чому це так?
Різ-Ваан

17

Додавання підтримки Java 8 для виправленої проблеми для файлу build.gradle

android {
     ...

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

leanback не знайдено я будую телевізійний додаток, і він стає червоним на все, що стосується підтримки Leanback v17
ralphgabb

1
недійсні кеші та перезапуск андроїд-студії
Дхаваль Пател

3
ні, ні, я зрозумів, що ти повинен використовувати пакет Android.
ralphgabb

Я думаю, що додавання підтримки Java 8 змушує Android Studio скасувати кеш-пам'ять і, таким чином, досягти того ж результату, що і побічний ефект ... Хммм, добре ...
varun

14

Здається, проблема Glide .

У мене була така ж помилка, і я просто оновив залежності Glide до 4.8, і помилок в побудові немає.

Котлін:

// 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"

Обов’язково ввімкніть у своїх gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Джерело: https://github.com/bumptech/glide/isissue/3124

Сподіваюся, це допоможе вам!


9
Ця помилка також здається мені, не маючи Glide як залежність
Fabian Streitel


4

Видалення testInstrumentationRunner працювало для мене:

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

фантастичне рішення! Виправлено це для мене
beastlyCoder

4

Якщо ви користуєтесь Kotlin, проблема з’явиться, якщо не використовувати kaptверсію для будь-якого процесора анотацій, який ви використовуєте в проекті.
Як @Vince згадував випадок із Glideцим, це може статися з Dagger2, Butterknifeі т. Д.
Якщо ви використовуєте обидва, Javaі Kotlinвам потрібно буде зберегти обидві залежності, як наступним чином (була $glideVersionпопередньо визначена версія Glide):

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

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

Якщо ви працюєте Kotlinлише над проектом, kaptзалежність повинна працювати поодинці.

РЕДАКТУВАННЯ
Ще одна річ, яку ви повинні мати на увазі, якщо ви вже використовуєте Androidx. Androidxє чудовим рефактором, але при міграції це може призвести до краху деяких залежностей. Основні бібліотеки вже оновлені Androidx, однак деякі з них не є і навіть не будуть.
Якщо проблема не усуне мого запропонованого рішення над цією редакцією, ви можете переглянути свої залежності і переконатися, що вони також використовуються Androidx.

EDIT 2
Як уже згадувалося @Ted, я дослідив назад, і він має право kaptтакож обробляти javaфайли. kaptпоодинці зроблять трюк, не потрібно тримати і обох, kaptі annotationProcessorзалежностей.


1
kapt також може обробляти файли java, тому не потрібно використовувати їх обоє, лише OK.
Тед

3

Спробуйте видалити цей рядок:

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

з розділу buildscript / repositories вашого файла build.gradle.

Коли я додав цей рядок, я отримав описану вами помилку. Коли я її зняв, вже не. Цей рядок має бути лише у розділі allprojects / repositories.


1
Я вважаю, що Джейк Уортон вже додав підтримку AndroidX у знімку 9.0.0. Дивіться: github.com/JakeWharton/butterknife/isissue/1280
nhoxbypass

2

Спробуйте встановити android.enableJetifier = false у gradle.properties. Потім вимкніть кеші / перезавантажте ... в Android Studio


8
Це не рекомендується, оскільки там можуть бути сторонні бібліотеки, які ще не були оновлені до AndroidX! Як зазначено в документації: "android.enableJetifier: Якщо встановлено значення true, плагін Android автоматично мігрує існуючі сторонні бібліотеки для використання AndroidX, переписуючи свої бінарні файли. Прапор за замовчуванням є помилковим, якщо його не вказано." developer.android.com/jetpack/androidx
Gábor Horváth

1

Виправлення міститься в 4.2.0, використовуйте вищу версію банку google gms.

Спробуйте змінити:

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

за цією версією:

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

Сподіваюся, це працює ...


1
Це працювало для мене разом із оновленням залежностей.
глісу

1

Якщо ви використовуєте кинджал або живіт, будь ласка, оновіть його до останньої версії. Або якщо у вашому проекті використовується інша бібліотека ін'єкцій, ви можете спробувати перевірити, чи підтримує він андроїд чи ні.

Я виявив таку ж помилку, проблема в моєму кинджалі та житниці. Виправили це, оновивши його до новітньої версії.


1

Версія для Android: 4.10.2

Я вирішив це питання трьома простими кроками: Спочатку я додав нижче цього в pubspec.yml: (з двома пробілами ідентифікації)

module:
  androidX: true 

Додаючи ці два рядки нижче в gradle.properties, я маю це в android / gradle.properties, в папці проекту.

android.useAndroidX=true
android.enableJetifier=true

І після цього я написав з терміналом:

flutter clean

Можливо, вам доведеться зупинити пристрій і запустити знову.



-1

Я виправив його, оновивши кеш-пам'ять (замість того, щоб її вимкнути - що також очищає краєзнавство):

  1. у файлі gradle.properties прокоментуйте рядок org.gradle.caching = true.
  2. Очистити, відновити.
  3. у файлі gradle.properties скасуйте коментар до рядка org.gradle.caching = true.
  4. Очистити, відновити.

Це воно!


-1

Перейдіть до файлу та натисніть Недійсний кеш і перезапустіть.

Після її перезавантаження ви збільшуєте мінімальну версію SDK у build.gradleфайлі додатка .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.