213 votes

L'installation affiche une erreur dans la console : INSTALL FAILED CONFLICTING PROVIDER

J'expérimente le programme d'exemple NotesList dans le SDK Android. J'ai fait une légère modification du programme, mais lorsque j'installe ma version modifiée, je continue à obtenir le message INSTALL_FAILED_CONFLICTING_PROVIDER dans la console lorsque j'essaie de l'installer alors que le programme Notes original est déjà sur l'appareil. Que dois-je modifier dans le Provider pour en faire une base de données unique ? Tout fonctionne bien si je désinstalle le programme Notes d'origine et que j'installe ma version modifiée.

251voto

CommonsWare Points 402670

L'autorité, telle que listée dans android:authorities doit être unique. Citation : la documentation relative à cet attribut :

Pour éviter les conflits, les noms d'autorité doivent utiliser une convention de dénomination de style Java (comme com.example.provider.cartoonprovider). En général, il s'agit du nom de la sous-classe ContentProvider qui implémente le fournisseur.

188voto

Jose L Ugia Points 1787

Si vous avez des saveurs différentes et que vous voulez éviter les collisions dans le nom de l'autorité, vous pouvez ajouter une option de type applicationIdSuffix pour construire des types et utiliser les applicationId dans votre manifeste, comme ceci :

<...
 android:authorities="${applicationId}.contentprovider"/>

39voto

nburk Points 859

Cela peut également se produire lorsque vous avez installé une ancienne version de votre application et que vous avez apporté des modifications à la bibliothèque (de support) ou au fichier manifeste. Supprimez les anciennes applications de votre appareil ( Settings --> Application --> <your application> --> Uninstall ) résoudra alors le problème.

31voto

DiscDev Points 8087

Si vous utilisez Google Maps + Google Play Services dans un projet de bibliothèque (en particulier si vous avez récemment migré d'Eclipse vers Android Studio), vous pouvez rencontrer cette erreur lorsque vous essayez d'exécuter une application qui utilise votre bibliothèque, alors qu'une autre application qui utilise la même bibliothèque est déjà installée sur votre appareil.

Fixe : Assurez-vous que defaultConfig.applicationId est défini dans la section Android de l'application. build.gradle pour chaque projet utilisant votre bibliothèque

android {
    defaultConfig.applicationId = "com.company.appname"
}

Je recommande d'utiliser le nom du paquet de l'application spécifique. Avec cette correction, les noms des fournisseurs ne seront plus en conflit et votre application fonctionnera comme prévu.

Symptômes

1.) Vos utilisateurs voient la redoutable erreur d'installation "-505" lorsqu'ils installent votre application depuis le Play Store.

2.) Ce message d'erreur s'affiche lorsque vous essayez d'installer une deuxième application qui utilise votre bibliothèque via Android Studio [INSTALL_FAILED_CONFLICTING_PROVIDER] :

Conflicting Provider

Dans votre console, vous verrez un message comme celui-ci :

Package couldn't be installed in /data/app/com.company.appname-1
com.android.server.pm.PackageManagerException: 
Can't install because provider name 
com.google.android.gms.measurement.google_measurement_service 
(in package com.company.appname) is already used by
com.company.otherInstalledAppName

La solution consiste à s'assurer que defaultConfig.applicationId est défini dans la section Android de l'interface utilisateur. build.gradle pour chaque projet utilisant votre bibliothèque

android {
    defaultConfig.applicationId = "com.company.appname"
}

Vous trouverez plus d'informations ici, dans le rapport de bogue original : Numéro 784 : Plusieurs applications utilisant le même nom de fournisseur d'autorité

28voto

Ankit Aggarwal Points 1611

Si vous utilisez le kit SDK Facebook, le problème peut se situer au niveau de la valeur "authorities" que vous fournissez pour le fournisseur Facebook.

REPLACE -

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider"
        android:exported="true" />

AVEC ->

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider[YOUR_APP_ID]"
        android:exported="true" />

Vous devrez peut-être modifier le defaultConfig.ApplicationId également comme suggéré dans d'autres réponses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X