Не удалось разрешить переменную «$ {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
}

Приложение / 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 эй, эй, мой вопрос был опубликован месяц назад, в то время как этот вопрос был отправлен 20 часов назад!
nhoxbypass

Ответы:


108

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

1) File -> Invalidate Caches / restart ... введите описание изображения здесь

2) Сборка -> Чистый проект введите описание изображения здесь


4
Каким-то образом работал для нескольких перестроений, но теперь я снова получаю ту же ошибку ..
Аль Кабоне

2
для меня чистого проекта было достаточно
f4bo

1
Также Чистый Проект был всем, что требовалось для меня. Спасибо @ f4bo за совет.
Джон Бентли

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

30

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

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

Отбой не найден. Я создаю ТВ-приложение, и оно становится красным на все, что касается поддержки откатов v17
ralphgabb

1
лишить законной силы кэши и перезапустить андроид студию
Dhaval Patel

3
нет, это не так, я подумал, что вы должны использовать пакет androidx.
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"

Ява :

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

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


9
Эта ошибка также кажется мне без зависимости от Glide
Фабиан Штрайтель



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.

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


1
Kapt также может обрабатывать Java-файлы, поэтому нет необходимости использовать их оба, только KAPT в порядке.
Тед

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/issues/1280
nhoxbypass

2

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


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

1

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

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

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

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

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

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


1
Это работало для меня вместе с обновлением зависимостей.
Глису

1

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

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


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

Перейдите в файл и нажмите Invalidate caches и перезапустите.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.