Не удалось разрешить переменную "${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 ответа
Я получил ту же ошибку после обновления моего файла 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
}
}
- очистить проект и запустить.
Перейдите в файл и нажмите Недействительные кеши и перезапустите.
После перезапуска вы увеличиваете минимальную версию SDK в своем приложении. build.gradle
файл.
Я исправил это, обновив каше (вместо того, чтобы аннулировать его, что также очищает локальную историю):
- в файле gradle.properties прокомментируйте строку org.gradle.caching=true.
- Очистить, восстановить.
- в файле gradle.properties откомментируйте строку org.gradle.caching=true.
- Очистить, восстановить.
Это оно!