room livedata example ejemplo developers architectural android android-studio android-gradle android-livedata
http://services.gradle.org/distributions/gradle-4.6-all.zip

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

(Registro completo)

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''



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:

  1. 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

  1. Fuerza de resolución de la biblioteca, también en dependencies sección de dependencies .

    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



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í:

https://github.com/firebase/FirebaseUI-Android#compatibility-with-firebase--google-play-services-libraries

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