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
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'
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.
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
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
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
J'espère que cette aide;)
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:
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'
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"
@ 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:
PS: J'ai également mis à niveau distributionUrl dans gradle-wrapper.properties vers http://services.gradle.org/distributions/gradle-4.6-all.Zip
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:
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
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'
}
}
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é.