Error al resolver la variable ''${animal.sniffer.version}'' cuando se migra a AndroidX
android-studio android-studio-3.0 (12)
Estoy usando Android Studio 3.2 Beta5 para migrar mi proyecto a AndroidX . Cuando reconstruyo mi aplicación obtuve estos errores:
ERROR: [TAG] Error al resolver la variable ''$ {animal.sniffer.version}''
ERROR: [TAG] Error al resolver la variable ''$ {junit.version}''
¡La limpieza y reconstrucción completas no funcionaron! Alguien sabe como arreglar esto?
gradle.properties
android.enableJetifier=true
android.useAndroidX=true
construir.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
}
app / 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''
Agregando soporte de Java 8 al problema arreglado del archivo build.gradle para mí
android {
...
//Add the following configuration in order to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Arreglé esto actualizando las dependencias de base de fuego a la última.
Eliminando el testInstrumentationRunner funcionó para mí:
defaultConfig {
...
...
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Intenta eliminar esta línea:
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
de la sección buildscript / repositories de su archivo build.gradle.
Cuando agregué esa línea, obtuve el error que describiste. Cuando lo quité, ya no. Esa línea solo debe estar en la sección todos los proyectos / repositorios.
Intente configurar android.enableJetifier = false en gradle.properties. Luego invalide los cachés / reinicie ... en Android Studio
Ir al archivo y hacer clic en Invalidar cachés y reiniciar.
Después de que se reinicie, aumentará la versión mínima de SDK en el archivo
build.gradle
su aplicación.
La solución está en 4.2.0, usa la versión superior de google gms jar.
Intenta cambiar:
classpath ''com.google.gms: google-services: 4.0.1''
por esta versión:
classpath ''com.google.gms: google-services: 4.2.0''
Espero que esto funcione...
Lo arreglé actualizando el cahche (en lugar de invalidarlo, lo que también borra el historial local):
- en el archivo gradle.properties, comente la línea org.gradle.caching = true.
- Limpiar, reconstruir.
- en el archivo gradle.properties, anule el comentario de la línea org.gradle.caching = true.
- Limpiar, reconstruir.
¡Eso es!
Parece ser Glide el problema.
Tuve el mismo error y acabo de actualizar las dependencias de Glide a 4.8 y no hay errores de compilación.
Kotlin:
// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
kapt "com.github.bumptech.glide:compiler:$glide_version"
Java:
// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"
Asegúrese de tener habilitado en su gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
Fuente: https://github.com/bumptech/glide/issues/3124
¡Espero que esto te ayudará!
Recibí el mismo error después de actualizar mi archivo build.gradle con las dependencias de prueba de AndroidX . Resulta que me olvidé de eliminar la antigua dependencia junit. Así que para mí, la solución fue simplemente eliminar la siguiente dependencia:
dependencies {
...
testImplementation ''junit:junit:4.12''
}
Si está utilizando
Kotlin
, el problema se abrirá si no usa la versión
kapt
para cualquier procesador de anotaciones que use en el proyecto.
Como @Vince mencionó el caso con
Glide
, esto podría suceder con
Dagger2
,
Butterknife
, etc.
Si está utilizando tanto
Java
como
Kotlin
, deberá mantener ambas dependencias, de la siguiente manera (si
$glideVersion
es una versión predefinida de
Glide
):
implementation "com.github.bumptech.glide:glide:$glideVersion"
kapt "com.github.bumptech.glide:compiler:$glideVersion"
Si está en un proyecto de
Kotlin
solamente, la dependencia de
kapt
debería funcionar sola.
EDITAR
Otra cosa que debes tener en cuenta es si ya estás usando
Androidx
.
Androidx
es un gran refactor, pero al migrar puede ocasionar que algunas de sus dependencias colapsen.
Las bibliotecas principales ya están actualizadas a
Androidx
, sin embargo, algunas de ellas no lo están y ni lo harán.
Si el problema no desaparece con la solución provista por encima de esta edición, puede echar un vistazo a sus dependencias y asegurarse de que también usen
Androidx
.
Editar 2
Como mencionó @Ted, investigué de nuevo y tiene razón
kapt
maneja archivos
java
.
kapt
solo hará el truco, no es necesario mantener las dependencias de
kapt
y de
annotationProcessor
kapt
.