Подтвердить что ты не робот

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

Ответ 1

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

1) Файл → Недействительный кеш/перезапуск... enter image description here

2) Сборка → Чистый проект enter image description here

Ответ 2

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

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

Ответ 3

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

Ответ 4

Кажется, это проблема 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

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

Ответ 5

Если вы используете Kotlin, проблема появится, если вы не используете версию kapt для любого процессора аннотаций, который вы используете в проекте.
Как @Vince упоминается случай с Glide, это может случиться с Dagger2, Butterknife для Butterknife и т.д.
Если вы используете как Java и Kotlin вам нужно сохранить обе зависимости следующим образом (где $glideVersion является предопределенной версией Glide):

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

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

Если вы работаете над проектом Kotlin only, зависимость kapt должна работать в одиночку.

РЕДАКТИРОВАТЬ
Еще одна вещь, которую вы должны иметь в виду, если вы уже используете Androidx. Androidx - отличный рефакторинг, но при миграции он может привести к разрушению некоторых ваших зависимостей. Основные библиотеки уже обновлены до Androidx, однако некоторые из них нет и даже не будут.
Если проблема не исчезнет с моим предложенным решением выше этой правки, вы можете взглянуть на свои зависимости и убедиться, что они также используют Androidx.

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

Ответ 6

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

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

Ответ 7

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

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

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

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

Ответ 8

Попробуйте установить android.enableJetifier = false в gradle.properties. Затем Invalidate Caches/Restart... в Android Studio

Ответ 9

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

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

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

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

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

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

Ответ 10

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

Ответ 11

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

Ответ 12

Пожалуйста, поместите файл google-services.json в папку приложения.

Ответ 13

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

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

Ответ 14

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

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

Это оно!

Ответ 15

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

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