Не удалось разрешить переменную "$ {animal.sniffer.version}" при переходе на AndroidX

Я использую Android Studio 3.2 Beta5 для переноса моего проекта на AndroidX. Когда я перестраиваю свое приложение, я получаю следующие ошибки:

ERROR: [TAG] Failed to resolve variable '${animal.sniffer.version}'

ERROR: [TAG] Failed to resolve variable '${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
}

приложение / 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'

Есть ли здесь прогресс?

Chad Bingham 18.08.2018 23:02

@ChadBingham Нет, это все та же ошибка

nhoxbypass 19.08.2018 06:59

Наконец-то нашли решение, ответ здесь: stackoverflow.com/a/52308912/10224384

Nabster 13.09.2018 09:51

Возможный дубликат stackoverflow.com/questions/52294319/…

Nabster 13.09.2018 09:52

@Nabster эй, эй, мой вопрос был опубликован месяц назад, а этот вопрос был опубликован 20 часов назад!

nhoxbypass 13.09.2018 10:12

Такая же проблема и со стабильной версией Android Studio 3.2. Недействительный перезапуск кеша только временно устранил эту проблему

Al Cabone 25.09.2018 15:58

@nboxbypass вы должны выбрать ответ! :)

Beto 02.08.2019 00:10
144
7
73 618
16

Ответы 16

Попробуйте удалить эту строку:

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

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

Когда я добавил эту строку, я получил описанную вами ошибку. Когда я его удалил, больше нет. Эта строка должна быть только в разделе allprojects / repositories.

Я считаю, что Джейк Уортон уже добавил поддержку AndroidX в моментальный снимок 9.0.0. См .: github.com/JakeWharton/butterknife/issues/1280

nhoxbypass 29.08.2018 10:23

Я исправляю это в два шага

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

2) Сборка -> Чистый проект

Как-то сработало несколько перестроек, но теперь я снова получаю ту же ошибку ..

Al Cabone 25.09.2018 15:58

для меня Clean Project было достаточно

f4bo 01.02.2019 14:59

К тому же Clean Project был всем, что мне требовалось. Спасибо @ f4bo за подсказку.

John Bentley 19.02.2019 02:19

Оно работает. Я только чистый проект. Этот ответ должен быть установлен как принятый. @nhoxbypass

azwar_akbar 04.07.2019 05:21

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

Это не рекомендуется, поскольку могут быть сторонние библиотеки, которые еще не были обновлены до AndroidX! Как говорится в документации: «android.enableJetifier: если установлено значение true, плагин Android автоматически переносит существующие сторонние библиотеки на использование AndroidX, переписывая их двоичные файлы. По умолчанию флаг установлен в false, если он не указан». developer.android.com/jetpack/androidx

gabhor 22.11.2018 20:52

Вроде проблема в Скольжение.

У меня была такая же ошибка, и я только что обновил зависимости 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"

Джава :

// 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/issues/3124

Надеюсь, что это поможет вам!

Эта ошибка также появляется мне без использования Glide в качестве зависимости

Fabian Streitel 10.02.2019 15:34

Исправление находится в версии 4.2.0, используйте более высокую версию google gms jar.

Попробуйте изменить:

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

по этой версии:

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

Надеюсь, это сработает ...

У меня это сработало вместе с обновлением зависимостей.

glisu 13.03.2019 03:57

Я исправил это, обновив зависимости firebase до последней версии.

Добавление Поддержка 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 v17

ralphgabb 10.01.2019 02:25

аннулировать кеши и перезапустить студию Android

Dhaval Patel 10.01.2019 09:05

Нет, это не так, я подумал, что вам нужно использовать пакет androidx.

ralphgabb 11.01.2019 00:30

Я предполагаю, что добавление поддержки Java 8 вынуждает Android Studio аннулировать свои кеши и, таким образом, дает тот же результат, что и побочный эффект ... Хммм, хорошо ...

varun 27.04.2019 12:43

У меня такая же ошибка после обновления файла build.gradle с помощью Зависимости AndroidX Test. Оказывается, я забыл удалить старую зависимость junit. Итак, для меня исправление заключалось в простом удалении следующей зависимости:

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

Это было проблемой для меня.

Brill Pappin 24.04.2019 21:51

Ага исправил. Я столкнулся с проблемой с курсом Udacity Kotlin угадай игру

Aswin Mohan 27.04.2019 07:42

Не могли бы вы объяснить, почему это так?

Riz-waan 10.10.2019 01:59

Если вы используете 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.

РЕДАКТИРОВАТЬ 2
Как упоминал @Ted, я исследовал, и он прав, kapt также обрабатывает файлы java. Только kapt сделает свое дело, нет необходимости сохранять обе зависимости kapt и annotationProcessor.

kapt также может обрабатывать файлы java, поэтому нет необходимости использовать их оба, только kapt в порядке.

Ted 21.03.2019 06:55

Я исправил это, обновив cahche (вместо того, чтобы делать его недействительным, что также очищает локальную историю):

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

Вот и все!

Удаление testInstrumentationRunner сработало для меня:

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

фантастическое решение! Исправлено для меня

beastlyCoder 25.09.2019 21:02

Перейдите в файл и нажмите Недействительные кеши и перезапустите.

После перезапуска вы увеличиваете минимальную версию SDK в файле build.gradle вашего приложения.

Исправлено, перейдя в основной каталог и набрав flutter clean.

Отлично, а если вы не используете флаттер;)

Kevin Galligan 16.10.2019 17:24

@KevinGalligan Тогда используйте Flutter;)

Nephew of Stackoverflow 05.12.2019 12:05

Если вы используете кинжал или масляный нож, обязательно обновите его до последней версии. Или, если у вас есть другая библиотека для инъекций, используемая в вашем проекте, вы можете попробовать проверить ее, поддерживает ли она androidx или нет.

Я обнаружил ту же ошибку, проблема в моем кинжале и масляном ноже. Исправили это, обновив до последней версии.

Версия Android: 4.10.2

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

module:
  androidX: true 

Добавив эти две строки ниже в gradle.properties, у меня есть это в android / gradle.properties, в папке проекта.

android.useAndroidX=true
android.enableJetifier=true

И после этого с помощью терминала написал:

flutter clean

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

Я столкнулся с этой ошибкой после добавления масляного ножа в свой проект.

Чтобы устранить эту ошибку, вы должны использовать Java8.

Я бы рекомендовал ответ это.

Как я это решил:

1. добавьте следующий код в build.gradle (модуль: приложение)

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
  1. очистить проект и запустить.

Другие вопросы по теме