web-dev-qa-db-fra.com

L'installation montre une erreur dans la console: INSTALLER UN FOURNISSEUR DE CONFLIT ÉCHEC

J'expérimente avec l'exemple de programme NotesList dans le SDK Android. J'ai légèrement modifié le programme, mais lorsque j'installe ma version modifiée, le message INSTALL_FAILED_CONFLICTING_PROVIDER s'affiche dans la console lorsque je tente de l'installer alors que le programme de notes d'origine est déjà sur le périphérique. Que dois-je changer dans le fournisseur pour en faire une base de données unique? Cela fonctionne bien si je désinstalle le programme de notes original puis installe ma version modifiée. 

114
johnsonjp34

L'autorité, telle qu'énumérée dans Android:authorities, doit être unique. Citation la documentation pour cet attribut :

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

153
CommonsWare

Si vous avez différentes variantes et que vous souhaitez éviter les collisions dans le nom de l'autorité, vous pouvez ajouter un applicationIdSuffix pour créer des types et utiliser la applicationId résultante dans votre manifeste, comme ceci:

<...
 Android:authorities="${applicationId}.contentprovider"/>
95
Jose L Ugia

Si vous utilisez Google Maps + Services Google Play 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 utilisant votre bibliothèque, tandis qu'une application différente utilisant la même bibliothèque est déjà installée sur votre appareil.

Fix: Assurez-vous que defaultConfig.applicationId est défini dans la section Android du fichier build.gradle pour chaque projet utilisant votre bibliothèque.

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

Je recommanderais d'utiliser le nom du package de l'application spécifique. Avec cette correction, les noms de fournisseur ne seront plus en conflit et votre application s'exécutera comme prévu.

Symptômes

1.) Vos utilisateurs constatent l'erreur d'installation "-505" tant redoutée lors de l'installation de votre application depuis le Play Store.

2.) Vous verrez ce message d'erreur 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

Le correctif consiste à s'assurer que defaultConfig.applicationId est défini dans la section Android du fichier build.gradle pour chaque projet utilisant votre bibliothèque.

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

Vous trouverez plus de lectures ici dans le rapport de bogue d'origine: Problème 784: Plusieurs applications utilisant le même nom de fournisseur d'autorité

30
DiscDev

Cela peut également se produire lorsqu'une version plus ancienne de votre application est installée et que vous apportez des modifications à la bibliothèque (d'assistance) ou au fichier manifeste. Supprimer les anciennes applications de votre appareil (Settings --> Application --> <your application> --> Uninstall) résoudra le problème. 

23
nburk

Si vous utilisez le Kit de développement logiciel (SDK) de Facebook, le problème peut concerner la valeur "autorités" que vous indiquez pour le fournisseur Facebook.

REMPLACER -

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

18
Ankit Aggarwal

La même erreur peut se produire après avoir renommé des packages. Vérifiez la valeur dans string.xml pour Android:authorities à partir de AndroidManifest.xml. 

<provider
        Android:authorities="@string/content_authority"
        Android:name=".data.Provider"
        ... />

Dans string.xml, la valeur doit être identique à votre nom de package, déclaré dans le manifeste.

<string name="content_authority">com.whatever.Android.sunshine.app</string>
14
burseaner

Le nom de l'autorité + du fournisseur que vous avez déclaré dans le manifeste est probablement

8
Benoit

En gros, cela m'est arrivé lorsque j'ai essayé de changer le nom du paquet de l'application.

Donc, dans l'émulateur, la même application a été installée auparavant. Lorsque j'ai essayé d'installer l'application après avoir changé le nom du paquet, il a été indiqué que l'autorité déjà utilisée par l'ancienne application de l'appareil.

Simplement après la désinstallation de l'application, mon problème a été résolu. 

De plus, le nom de l'autorité doit toujours être: your.package.name.UNIQUENAME;

exemple : 

  <provider
        Android:name="com.aviary.Android.feather.cds.AviaryCdsProvider"
        Android:authorities="your.package.name.AviaryCdsProvider"
       />
6
Ajay P. Prajapati

J'ai essayé beaucoup de solutions mais je n'ai pas trouvé de solution ... mais ce lien m'a aidé ... Je veux donner des détails sur le problème ...

J'exécutais des scénarios de test Instrumented pour que mon application ne soit pas visible dans le programme de lancement ... mais elle a été installée et utilise donc Same Content Provider. Donc, je devrais le désinstaller en quelque sorte. Alors Settings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package 

Maintenant, essayez de courir ... Cela fonctionnera ...

3
Kushal

J'ai eu un problème similaire lorsque j'ai utilisé une bibliothèque dans plusieurs applications. Il était nécessaire de mettre à jour votre AndroidManifest.xml avec la déclaration de fournisseur exacte ci-dessous.

<manifest ...>
    <application ...>
        <provider Android:name="Android.support.v4.content.FileProvider" Android:authorities="${applicationId}.here.this.library.provider" Android:exported="false" Android:grantUriPermissions="true" tools:replace="Android:authorities">
        </provider>
    </application>  
</manifest> 
3
Vladyslav Panchenko

Si vous utilisez Facebook dans l'application, recherchez l'étiquette du fournisseur dans le fichier AndroidManifest et vérifiez que votre project Id est correct pour Android:authorities

<provider Android:name="com.facebook.FacebookContentProvider" Android:authorities="com.facebook.app.FacebookContentProvider112623702612345" Android:exported="true" />
3
Dattatray Nande

installer en utilisant adb avec la commande ./adb install -r abc.apk résoudra le problème (il écrasera même lorsque le périphérique a une version plus récente de l'application)

2
Quang Vĩnh Hà

Je pensais que désinstaller l'application en faisant glisser son icône sur "Désinstaller" résoudrait le problème, mais ce n'est pas le cas.

Voici ce qui a résolu le problème:

  1. Aller aux paramètres
  2. Choisissez des applications
  3. Trouvez votre application (oui j'ai été surpris de le trouver encore ici!) Et appuyez dessus
  4. En haut à droite, appuyez sur les 3 points
  5. Sélectionnez " Désinstaller pour tous les utilisateurs "

Essayez encore, ça devrait marcher maintenant.

1
Nicolas Raoul

Dans mon appareil Android, j'avais différentes versions de la même application install. Cela me donne une erreur INSTALLER UN FOURNISSEUR CONFLICTING FAILE . Je désinstalle donc toutes les versions de la même application. et essayé 

adb install -r /Users/demo-debug-92acfc5.apk

Cela a résolu mon problème.

0
Vrushali Raut

Si vous êtes sur Xamarin et que vous obtenez cette erreur (probablement à cause de Firebase.Crashlytics):

INSTALL_FAILED_CONFLICTING_PROVIDER
Package couldn't be installed in [...]
Can't install because provider name dollar_openBracket_applicationId_closeBracket (in package [...]]) is already used by [...]

Comme mentionné ici , vous devez mettre à jour Xamarin.Build.Download:

  1. Mettez à jour le paquet Xamarin.Build.Download Nuget à 0.4.12-preview3
    • Sur Mac, vous devrez peut-être cocher Afficher les packages préliminaires dans la fenêtre Ajouter des packages .
  2. Fermer Visual Studio
  3. Supprimez tous les emplacements mis en cache des packages NuGet:
    • Sous Windows, ouvrez Visual Studio mais pas la solution:
      • Outils -> Option -> Gestionnaire de paquets Nuget -> Général -> Effacer tout le (s) cache (s) Nuget
    • Sur Mac, nettoyez les dossiers suivants:
      • ~/.local/share/NuGet
      • ~/.nuget/packages
      • Dossier packages dans la solution
  4. Supprimer les dossiers bin/obj dans la solution
  5. Charger la solution
  6. Restaurer les packages de nugets pour la solution (doit s'exécuter automatiquement)
  7. Reconstruire
0
gianlucaparadise

Rencontré ce problème.

Résolu par:

1 - ouvrez AndroidManifest.xml

2 - ctrl + f recherche "fournisseur"

3 - Recherchez le fournisseur et mettez à jour le nom de votre répertoire racine.

exécuter le projet. j'espère que le problème sera résolu!

0
Ali Nawaz