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

Я использую 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'

4 ответа

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

1) File -> Invalidate Caches / restart...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Версия Android: 4.10.2

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

module:
  androidX: true 

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

android.useAndroidX=true
android.enableJetifier=true

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

flutter clean

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

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

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

Чтобы устранить эту ошибку, вы должны использовать 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. очистить проект и запустить.

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

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

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

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

Это оно!

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