INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE

? AndroidUser99 @ | Original: StackOverFlow

Je utilise Google notifications dans mon application, et jusqu'à maintenant, je ai eu ce dans le manifeste :

<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Keeps the processor from sleeping when a message is received. --> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- This app has permission to register and receive data message. --> 

<!-- Creates a custom permission so only this app can receive its messages. NOTE: APP_PACKAGE.permission.C2D_MESSAGE -->   
<permission android:name="com.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.myapp.permission.C2D_MESSAGE" />    
<!-- END GCM -->

Il a parfaitement fonctionné jusqu'à ce que je mis à jour mon Nexus 7 à Android 5.0 . Maintenant, quand je essaie d'installer l'application dans ce dispositif avec Eclipse, je obtiens cette erreur :

INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.myapp.permission.C2D_MESSAGE pkg = com.myapp

Je ne comprends pas ce qui est faux ... il fonctionnait parfaitement jusqu'à ce que Android 5.0 . Je sais que je utilise C2D_MESSAGE en deux lignes, «____ » et « ____ », mais je ai copié ce code du guide Google GCM originale, donc il doit être bien.



Top 5 Respuesta

1x-code @

Je ai eu le même problème avec une autorisation de signature personnalisée sur Android - 21 et résolu en se assurant que je faisais une désinstallation complète .

Ce est un cas limite qui se produit lorsque :

An application defines a custom permission using signature level security You attempt to update the installed app with a version signed with a different key The test device is running Android 21 or newer with support for multiple users Command line example

Voici une transcription de ligne de commande qui démontre le problème et comment le résoudre . À ce stade, une version de débogage est installé et je essaie d'installer une version de production signé avec la clé de déblocage :

permission
Eclipse example

Allant dans le sens inverse ( essayez d'installer une version debug d'Eclipse quand une version release est déjà installé ), je obtiens le dialogue suivant:

INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE

Si vous répondez oui simplement à ce stade de l'installation réussira .

Device example

Comme l'a souligné dans une autre réponse, vous pouvez aussi aller à une page d'information de l'application dans les paramètres de l'appareil, cliquez sur le menu de débordement, et sélectionnez "Désinstaller pour tous les utilisateurs " pour éviter cette erreur .



2Preethi Rao @

tout en donnant cette erreur il mentionner clairement le nom du package de l'application en raison de laquelle l'autorisation refusée. Et juste de désinstaller l'application ne va pas résoudre le problème Pour résoudre le problème, nous pouvons faire l'étape suivante

1.Go aux réglages 2. aller à l'App 3. Allez téléchargé liste app 4.you peut voir l' application désinstallée dans la liste 5. Cliquez sur l'application, allez à option de plus 6.click lors de la désinstallation de toutes les options des utilisateurs

Problème résolu : D

3Yasir @

Auparavant, il avait coutume de dire que l' application avec signature différente se trouve sur l'appareil. Lors de l'installation d' IDE il serait également poser voulez-vous de le désinstaller ?

Mais je pense que d'Android 5.0, ils ont changé la raison de désinstallation . Cela ne arrive pas si vous installez l'application avec la même signature

4Giuseppe @

essayer de désinstaller l'application avec adb :

uses-permission
5TacB0sS @

CommonsWare est droite, mais à mon avis ce est un ( bug ) mauvaise façon de dire: « Le apk installé sur le périphérique est signé avec un autre certificat puis le nouveau celui que vous essayez d'installer " .

Ce est probablement un nouveau bug puisque dans le passé, il l'habitude de demander si oui ou non pour désinstaller l'application de l'appareil en raison de mauvais certificat.

La solution aussi douloureux que cela puisse être serait de désinstaller l'application manuellement .

Aussi ce que nous avons fait pour le bien de l'équipe de développement, nous avons ajouté le débogage de clés dans notre garde, et le point gradle de l'utiliser comme ceci:

# This fails because the debug version defines the custom permission signed with a different key:

[[email protected] svn-android-apps]# . androidbuildscripts/my-adb-install Example release
920 KB/s (2211982 bytes in 2.347s)
        pkg: /data/local/tmp/Example-release.apk
Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.example.android.example.PERMISSION_EXAMPLE_PLUGIN pkg=com.example.android.example]

# I use uninstall -k because apparently that is similar to uninstalling as a user
# by dragging the app out of the app tray:

[[email protected] svn-android-apps]# /android-sdk-linux/platform-tools/adb uninstall -k com.example.android.example
The -k option uninstalls the application while retaining the data/cache.
At the moment, there is no way to remove the remaining data.
You will have to reinstall the application with the same signature, and fully uninstall it.
If you truly wish to continue, execute 'adb shell pm uninstall -k com.example.android.example'

# Let's go ahead and do that:

[[email protected] svn-android-apps]# /android-sdk-linux/platform-tools/adb shell pm uninstall -k com.example.android.example
Success

# This fails again because the custom permission apparently is part of the data/cache
# that was not uninstalled:

[[email protected] svn-android-apps]# . androidbuildscripts/my-adb-install Example release
912 KB/s (2211982 bytes in 2.367s)
        pkg: /data/local/tmp/Example-release.apk
Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.example.android.example.PERMISSION_EXAMPLE_PLUGIN pkg=com.example.android.example]

# In spite of the warning above, simply doing a full uninstall at this point turned out to 
# work (for me):

[[email protected] svn-android-apps]# /android-sdk-linux/platform-tools/adb uninstall com.example.android.example
Success

# Release version now successfully installs:

[[email protected] svn-android-apps]# . androidbuildscripts/my-adb-install Example release
898 KB/s (2211982 bytes in 2.405s)
        pkg: /data/local/tmp/Example-release.apk
Success

[[email protected] svn-android-apps]# 

Et maintenant, en passant dispositifs entre les membres de l'équipe, nous utilisons tous le même certificat de débogage, il n'y a donc pas de problème . :)