Die manuelle Installation eines aktualisierten APK schlägt fehl mit "Signaturen stimmen nicht mit der zuvor installierten Version überein"

81

Ich habe eine dumme App erstellt, die ich mit ein paar Freunden teilen kann. Keine Notwendigkeit, es im App-Store zu veröffentlichen.

Ich habe das erste apk(signiert) erstellt, es auf einen Webserver hochgeladen und alles hat gut funktioniert.

Ein kleines Problem trat auf, ich habe es behoben, neu erstellt, mit demselben Keystore signiert und erneut hochgeladen. Es scheint jetzt, dass ich nicht von der neuen installieren kann apk. Der Debugger sagt mir:

signatures do not match the previously installed version

Also habe ich die alte Version deinstalliert, indem ich die App-Schublade geöffnet und auf die Schaltfläche "Deinstallieren" gezogen habe. Beim Öffnen von "Einstellungen -> Apps" sehe ich es nirgendwo mehr. Ich sehe keine Spuren der App auf meinem Gerät.

Trotzdem erhalte ich immer noch die obige Fehlermeldung.

Ist es möglich , einige Informationen noch verweilt auf dem Gerät irgendwo? Kann ich das auf irgendeine Weise überprüfen?

Exhuma
quelle
1
verwandte stackoverflow.com/questions/8137962/…
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功

Antworten:

166

Ja Es ist möglich, dass Ihre alte Anwendung nicht zu 100% entfernt wird oder ihre Daten nicht entfernt werden.

Versuchen:

adb uninstall "com.yourapp.yourapp"

Wenn Sie nicht genau wissen, was Sie als Ersatz für "com.yourapp.yourapp" verwenden sollen, öffnen Sie einfach Android Studio, führen Sie Ihre App aus, während sie mit einem Gerät verbunden ist, und sehen Sie sich dann das Debug-Fenster an.

Es sagt:

 Waiting for device.
 Target device: samsung-sm_t531-xxxxxxxxx
 Uploading file
 local path: C:\Users\myapp\app\build\outputs\apk\myapp.apk
 remote path: /data/local/tmp/com.myapp.myapp
 Installing com.myapp.myapp
 DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myapp.myapp"
 pkg: /data/local/tmp/com.myapp.myapp
 Success

com.myapp.myapp ist in diesem Fall der Name des Pakets, das Sie zur Deinstallation verwenden müssen.

Ehsan
quelle
1
Dies war in der Tat das Problem. Ich habe es einmal direkt von Android Studio auf dem Telefon bereitgestellt. Es scheint, dass diese Version nicht richtig entfernt wurde. Eine letzte Frage: Gibt es eine Möglichkeit, dies von Android Studio aus zu tun? Oder adb direkt von dort ausführen?
Exhuma
Ja, versuchen Sie einfach zu lernen, wie Sie Shell-Befehle von Ihrer Android-App ausführen. Dieser Thread ist ein guter Ausgangspunkt: stackoverflow.com/questions/20932102/…
Ehsan
Nein nein Nein. Keine Befehle von meiner App ausführen;) Ich habe mich gefragt, ob ich adbdirekt von "Android Studio" aus ausführen kann .
Exhuma
2
Dies ist gut, wenn Sie Entwickler sind. Wenn jedoch für jeden Endbenutzer dasselbe Problem auftritt, müssen Sie Folgendes beachten: Das Problem bestand darin, dass in neueren Versionen von Android die Deinstallation auf irgendeine Weise nur für diesen bestimmten Benutzer deinstalliert wird. Die Antwort ist, zu Einstellungen> Apps> In eine bestimmte App zu gehen und dann "Für alle Benutzer deinstallieren" aus dem Menüpunkt "..." oben rechts auszuwählen.
AnkitRox
Ist mir passiert, weil ich den Paketnamen geändert habe. Deinstallation hat den Trick gemacht
Guy Sopher
23

Ich hatte das gleiche Problem und die adb uninstallLösung funktionierte bei mir nicht.

Was funktionierte war

  • Gehen Sie auf Ihrem Gerät zu Einstellungen-> Apps
  • Wählen Sie Ihre App aus und wählen Sie im Menü "Für alle Benutzer deinstallieren".

Auch wenn ich die App zuvor deinstalliert hatte, war sie dort immer noch in der Liste.

Julien
quelle
Ja, dies kann auch passieren, wenn Sie mehrere Benutzerkonten auf Ihrem Gerät haben und die App auf mehreren installiert ist. Wenn Sie es für einen Benutzer deinstallieren, wird es nur von diesem Konto "nicht verbunden". Aber es bleibt auf der Festplatte. Es wird nur dann vollständig entfernt, wenn jeder Benutzer es deinstalliert hat.
Exhuma
1
"Für alle Benutzer deinstallieren" hat einwandfrei funktioniert. Alle anderen Benutzer entfernt)))
Inoy
Ich sehe nur "deinstallieren", nicht "für alle Benutzer deinstallieren" mit einem Emulator Pixel 3 29
Julie Pixie
6

Wenn die App verteilt werden soll, ist die adbLösung für mich ein No-Go: Sie können Ihren Freund nicht bitten, das Android SDK auf seinem Computer zu installieren!

Der Weg hierher besteht darin, das Attribut im Tag (das das Stammelement ist) zu bearbeiten AndroidManifest.xmlund zu erhöhen .android:versionCode<manifest>

Dies würde Ihre installierte Anwendung aktualisieren

Greg Berger
quelle
1
Das Problem wurde tatsächlich dadurch verursacht, dass ich die App während der Entwicklung über Android Studio auf einem Gerät installiert habe. Das Wiederaufbauen und Verteilen einer neuen APK war für alle außer mir vollkommen in Ordnung. Die adb-Lösung war also in Ordnung.
Exhuma
4

Wenn Sie dies sehen , während eine Verbindung Prüfungen durchführt, stellen Sie sicher schließen .test wenn über adb deinstallieren , weil über App zu deinstallieren -> Einstellungen nicht nicht loswerden das Testpaketes erhalten

adb uninstall your.broken.package.test

wenn Sie nur über deinstallieren

adb uninstall your.broken.package

Ihr Testpaket bleibt erhalten. Dies war nur etwas, was mir bei der Verwendung der Gradle-Befehlszeile aufgefallen ist. Ich bin auf dieses Problem in Android Studio nicht gestoßen

Joe Maher
quelle
3

Deinstallieren Sie die alte App von Ihrem Telefon oder Emulator und versuchen Sie erneut, sie auszuführen.

irfan AYDIN
quelle
Dies ist keine Antwort. SO gab an, dass er dies bereits versucht hat und das Problem immer noch da war.
BenRoob
1

Ich habe diesen Fehler beim Versuch, die Version zu installieren, während ich das Zertifikat signiere.

behoben mit der: app Gradle Task uninstallRelease und dann installRelease erneut

EF5
quelle
0

Für Unity-Benutzer, die auf diese Frage kommen, ist die beste Antwort in der Tat die obige von @Ehsan

adb uninstall "com.yourapp.yourapp"

Ich hatte bereits eine frühere Version auf meinem Android-Gerät installiert und dann unter Development BuildUnity> Build Settings ausgewählt, wodurch die APK eine andere Signatur verwendete. Wenn Sie über die Android-Benutzeroberfläche installieren, wird nicht alles entfernt, sodass Sie ADB verwenden müssen.

ow3n
quelle