web-dev-qa-db-fra.com

Erreur: Type de programme déjà présent: Android.Arch.lifecycle.LiveData

Lorsque j'appuie sur le bouton de lecture dans Android Studio, mon application est compilée mais affiche cette erreur (expurgée):

Erreur: Type de programme déjà présent: Android.Arch.lifecycle.LiveData

(Journal complet)

J'ai essayé de supprimer le dossier .gradle, puis d'aller à Build > Clean Project et Build > Rebuilt Project. Cependant, ça ne marche pas. J'ai également essayé de supprimer le code source, de cloner à nouveau depuis git et d'importer le dossier dans Android Studio. Cependant, il produit toujours cette erreur.

Voici le app/build.gradle de mon application:

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

Apparemment, ce comportement est prévu:

com.firebaseui: firebase-ui-firestore: 3.1.0 dépend de Android.Arch.lifecycle: extensions: 1.0.0-beta1. Le passage à la version 3.2.2 résout le problème en utilisant les bibliothèques Lifecycle 1.1 sur lesquelles est basée la bibliothèque de support 27.1.0. - Issue Tracker

Pour moi, la suppression des dépendances firebase-ui a résolu le problème puisque je n'utilisais même pas la bibliothèque.

26
Edric

J'ai eu le même problème aujourd'hui quand j'ai soulevé la version de la bibliothèque de support.

Essayez de remplacer all '27 .1.0 'par '27 .0.2'


Par la suite, j’ai réussi à supprimer l’erreur en mettant à niveau d’autres bibliothèques également.

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" }
    }
}

//////////////////app bibliothèques de niveaux:

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

///////////////

J'ai également mis à niveau graddle-wrapper.properties à:

#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
25
Hoornet

Cet article correspond au résultat principal de la recherche d'erreur très similaire: "Type de programme déjà présent: Android.Arch.lifecycle .ViewModelProvider $ Factory"

Mon projet utilise Room et LiveData, mais pas Firebase. Les modifications suivantes ont supprimé l'erreur:

DE:

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'

À:

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'

--- RÉPONSE MISE À JOUR --- 

Ma réponse précédente visait à résoudre cette erreur. Cependant, j’ai pensé que cela valait la peine de le présenter à nouveau en utilisant les meilleures pratiques:

Fichier build.gradle au niveau de l'application:

// 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"

Fichier build.gradle au niveau du projet:

ext {
   roomVersion = '1.1.1'
   archLifecycleVersion = '1.1.1'
}

Référence:
https://codelabs.developers.google.com/codelabs/Android-room-with-a-view/#2

19
Elletlar

Firebase-UI 3.1.0 n'est pas compatible avec Firebase/Google Services 11.8.0

Vous devrez mettre à niveau ou rétrograder selon https://github.com/firebase/FirebaseUI-Android#compatibility-with-firebase--google-play-services-libraries

  • Firebase-UI 3.1.0 avec Firebase/Google Services 11.4.2
  • Firebase/Google Services 11.8.0 avec Firebase-UI 3.1.3

J'espère que cette aide;)

3
lienmt

J'ai aussi eu l'erreur affichée dans la question initiale, à savoir:

Error:Program type already present: Android.Arch.lifecycle.LiveData

Il n'était pas clair quelles bibliothèques posaient le problème. Avec un indice de @lienmt ci-dessus, j'ai réalisé que cela pourrait être lié à Firebase.

Dans mon cas, j'utilise Firebase et j'utilisais aussi la bibliothèque Firebase-ui 3.2.2:

implementation 'com.firebaseui:firebase-ui-database:3.2.2'

J'avais mis à niveau toutes mes autres bibliothèques Firebase vers 15.0.0, mais je me suis rendu compte que ma bibliothèque Firebase-ui était incompatible et je l'ai confirmé ici:

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

Assurez-vous de faire correspondre votre version de firebase-ui aux versions exactes de Firebase pour lesquelles elles ont été corrigées pour l'appariement.

Ramener ma version de firebase-ui à la version 3.3.1 a permis de résoudre l’erreur:

implementation 'com.firebaseui:firebase-ui-database:3.3.1'

Pour référence, voici les versions que j'utilise actuellement et mon application fonctionne sans erreurs:

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

Veuillez ajouter les dépendances suivantes dans le fichier build.gradle de votre application.

implementation "Android.Arch.core:runtime:1.1.1"
implementation "Android.Arch.core:common:1.1.1"
1
Abhishek Chaniyara

@ Edric: comme je ne pouvais pas rejouer d'images dans le fil, je réponds à votre question ici.

Des changements qui ont fonctionné pour moi:

 Module  Project level

PS: J'ai également mis à niveau distributionUrl dans gradle-wrapper.properties vers http://services.gradle.org/distributions/gradle-4.6-all.Zip

0
Hoornet

Comme Edric mentionne, cela se produit car certaines bibliothèques utilisent encore l'ancienne version d'Android.Arch.lifecycle: bibliothèque d'extensions, c'est-à-dire Android.Arch.lifecycle:extensions:1.0.0.

Une façon de gérer cela consiste à forcer l'application à utiliser la même version de cette bibliothèque (et si possible, utilisez la plus récente).

Il y a deux façons de le faire:

  1. Défini explicitement la version de la bibliothèque que nous voulons utiliser dans notre Gradle, sous la section des dépendances.

    implementation 'Android.Arch.lifecycle:extensions:1.1.1

ou

  1. Forcer la résolution de la bibliothèque, également sous la section dependencies.

    Android {
        configurations.all {
            resolutionStrategy.force 'Android.Arch.lifecycle:extensions:1.1.1'
        }
    }
    
0
Kharda

Dans mon cas, le passage de targetSdkVersion et compileSdkVersion à 28, ainsi que l'utilisation de la version 28 de toutes les bibliothèques de support, a résolu le problème.


J'ai rencontré cela lorsque j'ai mis à niveau Glide. J'ai eu une erreur concernant un duplicate CoordinatorLayout . J'ai résolu cela en utilisant com.Android.support:design:27.1.0, mais j'ai eu une autre erreur concernant LiveData$LifecycleBoundObserver.

Au bout de quelques heures, j’ai abandonné et mis à niveau targetSdkVersion et compileSdkVersion vers API 28, ainsi que 

implementation 'com.Android.support:appcompat-v7:28.0.0'
implementation 'com.Android.support:design:28.0.0'
implementation 'com.Android.support:cardview-v7:28.0.0'

parce que YOLO. Par chance, cela a fonctionné.

0
Gene