example - Error: el tipo de programa ya está presente: android.arch.lifecycle.LiveData
viewmodel android developers (8)
Cuando presiono el botón de reproducción en Android Studio, mi aplicación se compila, pero muestra este error (eliminado):
Error: el tipo de programa ya está presente: android.arch.lifecycle.LiveData
He intentado eliminar la carpeta .gradle
y luego ir a Build > Clean Project
y Build > Rebuilt Project
. Sin embargo, no funciona. También he intentado eliminar el código fuente, luego clonar nuevamente desde git
e importar la carpeta a Android Studio. Sin embargo, todavía produce ese error.
Aquí está la app/build.gradle
de mi aplicación:
apply plugin: ''com.android.application''
android {
compileSdkVersion 27
buildToolsVersion ''27.0.3''
defaultConfig {
applicationId "com.edricchan.studybuddy"
minSdkVersion 24
targetSdkVersion 27
versionCode 8
versionName "1.0.0-rc.503"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
resConfigs "en"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
dataBinding {
enabled = true
}
}
dependencies {
implementation ''com.android.support:support-v4:27.1.0''
implementation ''com.android.support:support-annotations:27.1.0''
implementation fileTree(dir: ''libs'', include: [''*.jar''])
androidTestImplementation(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
implementation ''com.android.support:appcompat-v7:27.1.0''
implementation ''com.android.support.constraint:constraint-layout:1.0.2''
implementation ''com.android.support:design:27.1.0''
implementation ''com.android.support:cardview-v7:27.1.0''
testImplementation ''junit:junit:4.12''
// Firebase stuff
implementation ''com.google.firebase:firebase-storage:11.8.0''
implementation ''com.google.firebase:firebase-firestore:11.8.0''
implementation ''com.google.firebase:firebase-auth:11.8.0''
implementation ''com.google.firebase:firebase-messaging:11.8.0''
implementation ''com.google.android.gms:play-services-auth:11.8.0''
implementation ''com.firebaseui:firebase-ui-auth:3.1.0''
implementation ''com.firebaseui:firebase-ui-firestore:3.1.0''
implementation ''com.firebaseui:firebase-ui-storage:3.1.0''
// Provide a way to update the app
implementation ''com.github.javiersantos:AppUpdater:2.6.4''
// Chrome Custom Tabs
implementation ''com.android.support:customtabs:27.1.0''
// The app''s intro screen
implementation ''com.heinrichreimersoftware:material-intro:1.6.2''
// Use for new Material Text field boxes recently introduced
implementation ''com.github.HITGIF:TextFieldBoxes:1.3.7''
// Report an issue to Github without having to open a new tab and so on...
implementation ''com.heinrichreimersoftware:android-issue-reporter:1.3.1''
}
apply plugin: ''com.google.gms.google-services''
@Edric: ya que no pude reproducir imágenes en el hilo, estoy respondiendo tu pregunta aquí.
Cambios que me funcionaron:
PD: También actualicé distributionUrl en gradle-wrapper.properties a http://services.gradle.org/distributions/gradle-4.6-all.zip
Al parecer, este es el comportamiento pretendido:
com.firebaseui: firebase-ui-firestore: 3.1.0 depende de android.arch.lifecycle: extensions: 1.0.0-beta1. El cambio a la versión 3.2.2 soluciona el problema utilizando las bibliotecas de Lifecycle 1.1 sobre las que se basa la biblioteca de soporte 27.1.0. - issuetracker.google.com/issues/74130804
Para mí, eliminar las firebase-ui
solucionó el problema ya que, en primer lugar, ni siquiera estaba usando la biblioteca.
Como mencionó Edric, esto sucede porque algunas bibliotecas aún usan la versión antigua de android.arch.lifecycle: extensions library, que es android.arch.lifecycle:extensions:1.0.0
.
Una forma de manejar esto es forzando a la aplicación a usar la misma versión de esa biblioteca (y si podemos, usar la más nueva).
Hay dos maneras de hacerlo:
Definimos explícitamente la versión de la biblioteca que queremos usar en nuestra sección de Gradle, en dependencias.
implementation ''android.arch.lifecycle:extensions:1.1.1
o
Fuerza de resolución de la biblioteca, también en
dependencies
sección dedependencies
.android { configurations.all { resolutionStrategy.force ''android.arch.lifecycle:extensions:1.1.1'' } }
Esta publicación es el resultado de la búsqueda principal para el error muy similar: "El tipo de programa ya está presente: android.arch.lifecycle. ViewModelProvider $ Factory "
Mi proyecto usa Room y LiveData, pero no firebase. Los siguientes cambios eliminaron el error:
DESDE:
implementation ''android.arch.persistence.room:runtime:1.0.0''
annotationProcessor ''android.arch.persistence.room:compiler:1.0.0''
implementation ''android.arch.lifecycle:extensions:1.0.0''
annotationProcessor ''android.arch.lifecycle:compiler:1.0.0''
A:
implementation ''android.arch.persistence.room:runtime:1.1.1''
annotationProcessor ''android.arch.persistence.room:compiler:1.1.1''
implementation ''android.arch.lifecycle:extensions:1.1.1''
annotationProcessor ''android.arch.lifecycle:compiler:1.1.1''
--- RESPUESTA ACTUALIZADA ---
Mi respuesta anterior estaba dirigida a resolver este error. Sin embargo, pensé que valdría la pena presentarlo nuevamente usando las mejores prácticas:
Nivel de aplicación del archivo build.gradle:
// Room components
implementation "android.arch.persistence.room:runtime:$rootProject.roomVersion"
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
androidTestImplementation "android.arch.persistence.room:testing:$rootProject.roomVersion"
// Lifecycle components
implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
annotationProcessor "android.arch.lifecycle:compiler:$rootProject.archLifecycleVersion"
Archivo de nivel de proyecto build.gradle:
ext {
roomVersion = ''1.1.1''
archLifecycleVersion = ''1.1.1''
}
Referencia:
https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#2
Firebase-UI 3.1.0 no es compatible con Firebase / Google Services 11.8.0
Necesitará actualizar o bajar de categoría según https://github.com/firebase/FirebaseUI-Android#compatibility-with-firebase--google-play-services-libraries
- Firebase-UI 3.1.0 con Firebase / Google Services 11.4.2
- Firebase / Google Services 11.8.0 con Firebase-UI 3.1.3
Espero que esto ayude ;)
Por favor agregue las siguientes dependencias en su aplicación build.gradel archivo
implementation "android.arch.core:runtime:1.1.1"
implementation "android.arch.core:common:1.1.1"
También tuve el error publicado en la pregunta original, a saber:
Error:Program type already present: android.arch.lifecycle.LiveData
No estaba claro qué bibliotecas estaban causando el problema. Con una sugerencia de @lienmt arriba, me di cuenta de que puede estar relacionado con Firebase.
En mi caso, estoy usando Firebase y también estaba usando firebase-ui library 3.2.2:
implementation ''com.firebaseui:firebase-ui-database:3.2.2''
Había actualizado todas mis otras bibliotecas Firebase a 15.0.0, pero me di cuenta de que mi biblioteca firebase-ui era incompatible y lo confirmé aquí:
Asegúrese de hacer coincidir su versión de Firebase-ui con las versiones exactas de Firebase para las cuales se han corregido para el emparejamiento.
Bumping mi versión de Firebase-ui a 3.3.1 fue lo que resolvió el error:
implementation ''com.firebaseui:firebase-ui-database:3.3.1''
Para referencia, aquí están las versiones que estoy usando ahora y mi aplicación se está ejecutando sin errores:
implementation ''com.google.android.gms:play-services-wearable:15.0.0''
implementation ''com.google.android.gms:play-services-auth:15.0.0''
implementation ''com.android.support:appcompat-v7:27.1.1''
implementation ''com.android.support:design:27.1.1''
implementation ''com.android.support:cardview-v7:27.1.1''
implementation ''com.android.support:support-v4:27.1.1''
implementation ''com.android.support.constraint:constraint-layout:1.1.0''
implementation ''com.google.firebase:firebase-database:15.0.0''
implementation ''com.google.firebase:firebase-core:15.0.0''
implementation ''com.google.firebase:firebase-auth:15.0.0''
implementation ''com.google.firebase:firebase-messaging:15.0.0''
implementation ''com.firebaseui:firebase-ui-database:3.3.1''
Tuve el mismo problema hoy cuando levanté la versión de la biblioteca de soporte.
Intente reemplazar todos los ''27 .1.0 ''con ''27 .0.2''
Más tarde logré eliminar el error al actualizar otras bibliotecas también. Este es mi estado de trabajo actual: root gradle:
buildscript {
ext.kotlin_version = ''1.2.21''
ext.support_version = ''27.1.0''
ext.anko_version = ''0.10.4''
ext.android_plugin_version = ''3.0.1''
ext.google_services_version = ''11.8.0''
repositories {
google()
jcenter()
maven { url ''https://maven.fabric.io/public'' }
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
classpath ''com.android.tools.build:gradle:3.1.0-beta4''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath ''com.google.gms:google-services:3.1.1''
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
//////////////////// aplicación gradle bibliotecas:
dependencies {
implementation fileTree(include: [''*.jar''], dir: ''libs'')
implementation(''com.crashlytics.sdk.android:crashlytics:2.9.1@aar'') {
transitive = true
}
// kotlin:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "org.jetbrains.anko:anko-common:$anko_version"
implementation "org.jetbrains.anko:anko-commons:$anko_version"
implementation ''org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.3''
// support libraries:
implementation "com.android.support:recyclerview-v7:$support_version"
implementation "com.android.support:support-v4:$support_version"
implementation "com.android.support:design:$support_version"
implementation "com.android.support:appcompat-v7:$support_version"
implementation "com.android.support:cardview-v7:$support_version"
implementation "com.android.support:support-vector-drawable:$support_version"
// misc:
implementation ''com.github.d-max:spots-dialog:0.7@aar''
implementation ''com.squareup.picasso:picasso:2.5.2''
implementation ''com.android.support.constraint:constraint-layout:1.1.0-beta5''
implementation ''com.backendless:backendless:4.4.0''
implementation ''io.nlopez.smartlocation:library:3.3.3''
// Google services:
implementation "com.google.firebase:firebase-core:$google_services_version"
implementation "com.google.firebase:firebase-auth:$google_services_version"
implementation ''com.firebaseui:firebase-ui-auth:3.2.2''
implementation "com.google.android.gms:play-services-location:$google_services_version"
implementation "com.google.android.gms:play-services-auth:$google_services_version"
implementation(''com.google.api-client:google-api-client:1.23.0'') {
exclude group: ''com.google.code.findbugs'', module: ''jsr305''
}
}
///////////////
También actualicé graddle-wrapper.properties a:
#Wed Dec 20 15:08:34 CET 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https/://services.gradle.org/distributions/gradle-4.6-all.zip