Ich hatte das gleiche Problem mit einer benutzerdefinierten Signaturberechtigung für Android-21 und löste es, indem ich sicherstellte, dass ich eine vollständige Deinstallation durchführte.
Dies ist ein Randfall, der auftritt, wenn:
- Eine Anwendung definiert eine benutzerdefinierte Berechtigung mithilfe der Sicherheit auf Signaturstufe
- Sie versuchen, die installierte App mit einer Version zu aktualisieren, die mit einem anderen Schlüssel signiert ist
- Auf dem Testgerät wird Android 21 oder neuer ausgeführt, wobei mehrere Benutzer unterstützt werden
Befehlszeilenbeispiel
Hier ist ein Befehlszeilentranskript, das das Problem und seine Lösung demonstriert. Zu diesem Zeitpunkt ist eine Debug-Version installiert, und ich versuche, eine mit dem Release-Schlüssel signierte Produktionsversion zu installieren:
# This fails because the debug version defines the custom permission signed with a different key:
[root@localhost 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:
[root@localhost 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:
[root@localhost 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:
[root@localhost 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):
[root@localhost svn-android-apps]# /android-sdk-linux/platform-tools/adb uninstall com.example.android.example
Success
# Release version now successfully installs:
[root@localhost 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
[root@localhost svn-android-apps]#
Eclipse-Beispiel
Wenn ich in die entgegengesetzte Richtung gehe (versuche, einen Debug-Build von Eclipse zu installieren, wenn bereits ein Release-Build installiert ist), erhalte ich den folgenden Dialog:
Wenn Sie an dieser Stelle nur mit Ja antworten, ist die Installation erfolgreich.
Gerätebeispiel
Wie in einer anderen Antwort erwähnt, können Sie in den Geräteeinstellungen auch eine App-Infoseite aufrufen, auf das Überlaufmenü klicken und "Für alle Benutzer deinstallieren" auswählen, um diesen Fehler zu vermeiden.