Ich habe mit meinem Nexus 4 unter Android debuggt, bin jedoch kürzlich auf diesen Fehler gestoßen. Nach einigen Recherchen zu diesem Fehler scheint es ein Problem zu geben, dass die App nicht ordnungsgemäß gelöscht wurde. Die App, die ich debugge, läuft sowohl auf meinen anderen Android-Geräten als auch auf den Emulatoren einwandfrei. Dieser Fehler tritt nur auf meinem Nexus 4 auf. Ich habe mein Gerät an einen Computer angeschlossen und versucht, die Daten / Datenordner zu löschen, erhalte aber immer noch die gleicher Fehler. Ich habe auch Einstellungen-Apps überprüft, um zu überprüfen, ob sie definitiv deinstalliert wurden.
Hat jemand eine Idee, wie man dieses Problem löst? Laut einigen Benutzern benötige ich Root-Zugriff, um Daten / Daten ordnungsgemäß zu löschen. Stimmt das? Oder gibt es einen anderen Weg, um das zu umgehen?
/data/data/your.package.name
und löschen/data/app
, anscheinend wurden sie nicht vollständig deinstalliert.Antworten:
Manchmal müssen Sie auch die Datenordner deinstallieren. Für mich hatte ich ein Paket im Userspace von
com.kikin.cts
und auch ein Ordnerverzeichnis in/data/data/com.kikin.cts
. Wird immer wieder abgerufenINSTALL_FAILED_UID_CHANGED
, aber nach dem Entfernen des Datenordners ist der Fehler behoben.quelle
Für gerootete Geräte:
Führen Sie den folgenden Befehl aus
adb rm -rf /data/data/<your.package.name>
Für Geräte ohne Rootberechtigung:
quelle
Starten Sie Ihr Gerät neu und löschen Sie Ihr Projekt. Grundsätzlich hätte die Deinstallation dies für Sie getan, falls Sie nicht versuchen, einen Neustart durchzuführen.
quelle
Sie haben wahrscheinlich eine SharedUserID eingeführt, die dies verursacht.
quelle
Ich habe eine andere Lösung für mich. Sie können den Paketnamen der Anwendung so ändern , dass das Gerät ihn als unterschiedliche Anwendung erkennt und die Installation erfolgreich abgeschlossen wird. Könnte hilfreich sein für diejenigen, die keinen Root-Zugriff haben und das Gerät auch nicht zurücksetzen möchten.
quelle
Ich habe Root auf meinem Nexus 5, aber nichts hat funktioniert, daher musste ich einen Werksreset über die Einstellungen durchführen, die funktionierten.
quelle
Für mich wurde der Trick gemacht, indem "Apps über USB überprüfen" im Abschnitt "Entwickleroptionen" deaktiviert wurde.
quelle
Ich dachte, ich würde dies teilen, falls es jemandem hilft ... Ich habe eine neue Version meiner App in Eclipse geschrieben und versucht, sie auf meinem Telefon auszuführen, obwohl ich eine etwas ältere Version auf dem Telefon habe, die ich aus dem Google Play Store heruntergeladen habe. Eclipse öffnete einen Dialog und fragte, ob ich die vorhandene Telefonversion gerne deinstallieren würde, und stimmte zu. Die Deinstallation war fehlerhaft und führte zu INSTALL_FAILED_UID_CHANGED.
Ich habe die meisten hier vorgeschlagenen Dinge ohne Glück ausprobiert. Es gab keine offensichtliche Spur der APK auf meinem Telefon oder von Datendateien, die ich löschen konnte, aber etwas hinderte mich daran, die APK vor Eclipse auf das Telefon zu laden. Ich konnte meine vorherige Beta-Testversion auch nicht von Google Play herunterladen. Der Download wurde zu 100% fortgesetzt, schlug jedoch mit der Meldung "Unbekannter Fehler" und einer Nummer (wahrscheinlich -24) fehl.
Ich habe gezögert, mein Paket umzubenennen, da ich bereits Betatester und In-App-Produkte mit dem alten Paketnamen eingerichtet habe, aber ich habe den Paketnamen in Eclipse vorübergehend geändert und konnte diese neue Version auf dem Telefon installieren und dann herunterladen auch die ältere Google Play-Version. Beide Versionen saßen glücklich nebeneinander am Telefon mit demselben App-Namen und Symbol (aber unterschiedlichen Paketnamen hinter den Kulissen). Ich könnte dann eines oder beide manuell deinstallieren, indem ich das App-Symbol auf das Deinstallationssymbol des Telefons ziehe. Die manuelle Deinstallation beseitigte den Konflikt und reparierte die fehlerhafte Deinstallation von Eclipse. Daher benannte ich mein Eclipse-Paket einfach in den ursprünglichen Namen um und fuhr wie zuvor fort.
Dies war viel weniger schmerzhaft als ein Zurücksetzen auf die Werkseinstellungen oder ein dauerhaftes Umbenennen des Pakets. Es funktioniert wahrscheinlich nur, wenn die Fehlerquelle ein Konflikt zwischen einer Eclipse-Version und einer Google Play-Version ist, aber es ist einen Versuch wert, wenn Sie sich in einer ähnlichen Situation befinden.
quelle
In den meisten Fällen
INSTALL_FAILED_DEXOPT
oderINSTALL_FAILED_UID_CHANGED
bedeutet dies, dass Sie nicht genügend Speicherplatz für die Installation der App haben.Entfernen Sie einige nicht verwendete Apps von Ihrem Gerät oder entfernen Sie zumindest die aktuelle Version Ihrer App.
adb uninstall package-name
In sehr seltenen Fällen kann es zu Problemen mit den Anwendungsdaten kommen. Sie haben zwei Möglichkeiten, je nachdem, ob Ihr Gerät gerootet ist oder nicht
Nicht verwurzelt
Werksreset
Settings -> Backup and reset -> Factory data reset
(zumindest für Samsung S5)Verwurzelt (oder Emulator)
adb shell "rm -rf /data/data/package-name"
quelle
Das hat bei mir funktioniert:
adb shell rm -rf /system/app/<package.name>
quelle
In der ADB-Shell finden Sie auf zwei Arten eine Lösung. 1. Bewahren Sie die Daten auf und finden Sie die Lösung und 2. die Lösung, ohne die Daten zu speichern
Die Lösung für 1. besteht darin, den Befehl
adb chown -R UID:UID /data/data/your.package.name
über die Eingabeaufforderung vom ADB-Pfad aus auszuführen .Lösung für 2. besteht darin, den Befehl
adb rm -r /data/data/your.package.name
über denselben Pfad auszuführen .quelle
Dieses Problem trat in den letzten Tagen auf meinem Galaxy Note 3-Testgerät auf. Ich habe Calabash-Andrdoid verwendet und immer wieder den Fehler INSTALL_FAILED_UID_CHANGED erhalten, wenn die Methode install_app versucht hat, sie auszuführen. Ich hatte mit diesem Problem zu kämpfen, weil zwei Testgeräte dies erlebten. Ich habe alles oben Genannte ausprobiert, einschließlich des Entleerens meiner Ordner / data / data / app und app.test. Ich habe sogar das Instrumentierungs-Backend-Material gelöscht, das Xamarin installiert, da dies die Plattform ist, auf der ich meine App entwickelt habe. Ich konnte nichts anderes finden, um es manuell vom Gerät zu löschen. Als ich versuchte, meine Arbeit auf einem dritten Gerät auszuführen, und feststellte, dass alles erfolgreich lief, stellte ich fest, dass das Problem bei den Geräten lag. Am Ende funktionierte das einzige, was für mich funktionierte , ein Zurücksetzen auf die Werkseinstellungeneines der Geräte. Ich hoffe das hilft.
Danke, -Shah
quelle
Hier ist etwas, das von den vorhandenen Antworten nicht abgedeckt wird. Das passierte mir auf dem Emulator. Wenn ich Benutzerdaten zurücksetze, erhalte ich zum ersten Mal INSTALL_FAILED_DEXOPT, danach jedoch INSTALL_FAILED_UID_CHANGED. Ich fand, dass rm -r /data/data/com.foo.bar ausreicht, um auf den ersten Status zurückgesetzt zu werden.
Der eigentliche Schuldige in meinem Fall ist ein Java-Methodenname, der dazu geführt hat, dass dexopt fehlgeschlagen ist. Achten Sie genau darauf, was in logcat enthalten ist. Folgendes hat es verraten:
I/PackageManager( 1275): Running dexopt on: com.foo.bar E/dalvikvm( 2857): Invalid name: '__jni_setLocation' E/dalvikvm( 2857): Trouble with item 14787 @ offset 0x43b68 E/dalvikvm( 2857): Cross-item verify of section type 0005 failed E/dalvikvm( 2857): ERROR: Byte swap + verify failed E/dalvikvm( 2857): Optimization failed W/installd( 941): DexInv: --- END '/data/app/com.foo.bar-1.apk' --- status=0xff00, process failed E/installd( 941): dexopt in='/data/app/com.foo.bar-1.apk' out='/data/dalvik-cache/data@[email protected]@classes.dex' res=65280 W/PackageManager( 1275): Package couldn't be installed in /data/app/com.foo.bar-1.apk
Ich kann Ihnen nicht sagen, warum dexopt einige Methodennamen nicht mag, aber das war das Problem.
quelle
Okay, für mein LG NEXUS 4 ist hier die Lösung verwurzelt : (
und
Angenommen, es ist: app-debug-unaligned.apk
Jetzt schreiben Sie in der Konsole:
adb push app-debug-unaligned.apk /sdcard/ adb shell su rm -fr /data/local/tmp/app-debug-unaligned.apk rm -fr /data/data/app-debug-unaligned.apk
Verlassen Sie nun adb und rufen Sie an
adb shell su -c "pm install /sdcard/app-debug-unaligned.apk"
Arbeiten?
quelle
Ich habe gelöscht
/data/data/my.package.name
und das/data/app/my.package.name.apk
Problem bleibt bestehen.Ich habe jedoch einen Ordner gefunden
/data/user/0/my.package.name
, ihn gelöscht und das Problem behoben.quelle
Deinstallieren Sie einfach die App selbst (nicht die Datenordner) und installieren Sie sie erneut. Das sollte in Ordnung sein. Android beschwert sich, weil Sie die App möglicherweise zuvor von einem anderen Computer aus getestet haben.
quelle
Eine Lösung für Geräte ohne Rootberechtigung. Gehen Sie zum Anwendungsmanager und deinstallieren Sie die App "Selendroid" und versuchen Sie es erneut. Diese Lösung funktioniert bei mir.
quelle
Ich behebe das, vielleicht funktioniert es bei jedem anderen.
Ich starte mein Telefon neu und entferne dann ein paar weitere Apps. Und versuchen Sie es erneut, es funktioniert!
Möglicherweise ist das Problem im Begriff zu speichern. Ich weiß nicht warum, aber es funktioniert jetzt. Viel Glück! (Entschuldigung für schlechtes Englisch)
quelle
Verwenden
Gehe zur Muschel.
Führen Sie dann den folgenden Befehl aus:
Bitte ersetzen Sie den Paketnamen mit Ihrem eigenen, z. B. com.map.map
quelle
Für alle, die Junit-Stiltests von ihrem Computer aus ausführen und diesen Fehler erhalten - während die Konsole mir mitteilte, dass ein Problem mit meiner Anwendung (im Format 'com.myapp.stuff' verpackt) aufgetreten ist, war das eigentliche Problem mein Testcode- Paket . Wenn Sie auf einem Gerät ausgeführt werden, wird es als separate App mit dem Paketnamen "com.myapp.stuff.test" installiert. Das Löschen des Testcodes "Anwendung" mit dem Anwendungsmanager und das Löschen meiner eigentlichen App löste das Problem für mich. Ich poste diese Antwort hier, um jemand anderem einen "Duh" -Moment zu ersparen.
quelle
Gleiches Problem auf einem Mediacom-Gerät, zuerst a
$ adb install -r platforms/android/out/android-debug-unaligned.apk 3958 KB/s (22887489 bytes in 5.647s) pkg: /data/local/tmp/android-debug-unaligned.apk Failure [INSTALL_FAILED_DEXOPT]
dann ein sehr hartnäckiger :
$ adb install -r platforms/android/out/android-debug-unaligned.apk 4949 KB/s (22887489 bytes in 4.515s) pkg: /data/local/tmp/android-debug-unaligned.apk Failure [INSTALL_FAILED_UID_CHANGED]
Durch das Zurücksetzen auf die Werkseinstellungen wurde die Dynamik nicht geändert (ich habe beide Fehler nacheinander erhalten).
Das Rooten war keine Option, die Lösung war für mich ein Cache-Löschen: Jetzt funktioniert die fehlerhafte App-ID einwandfrei und ich musste nicht (erneut) auf die Werkseinstellungen zurücksetzen.
Ich hoffe es hilft
quelle
Für mich war da ein bisschen mehr dran. Einfach zu entfernen
/data/data/appfolder
hat nicht geholfen.Der zusätzliche Grund war, dass meine externen Bibliotheken nicht in der
.apk
Datei enthalten waren, da der Name des Ordners lib anstelle von libs war . Dies hat[INSTALL_FAILED_DEXOPT]
während derapk
Installation gefolgt von[INSTALL_FAILED_UID_CHANGED]
.Das Ändern des libs-Ordnernamens hat in diesem Fall für mich funktioniert.
quelle
Ich habe eine Lösung gefunden, die sowohl auf einem nicht gerooteten Gerät als auch auf einem Emulator funktioniert. Während Sie die Datenordner auf einem nicht gerooteten Gerät nicht direkt löschen können, können Sie den folgenden
pm
Befehl verwenden, um dies zu tun:adb shell
pm uninstall <app name>
(dh com.example.myapp)pm uninstall <test app name>
(dh com.example.myapp.test) - Möglicherweise wird eine Fehlermeldung angezeigt, wenn die Test-App zuvor nicht installiert wurde.Es scheint, dass dies aus irgendeinem Grund bei der Deinstallation der Apps von der Android-Benutzeroberfläche nicht funktioniert (möglicherweise werden die Datenordner nicht gelöscht). Bei der Deinstallation über den
pm
Befehl funktioniert dies jedoch.Versuchte es auf einem "Nexus 5" und auf einem "OnePlus One".
quelle
Dies liegt offensichtlich an einer unsachgemäßen Deinstallation (wahrscheinlich an einer fehlerhaften Kabelverbindung).
LÖSUNG Laden Sie SDMaid aus dem Play Store herunter und löschen Sie Corpse-Dateien (Junk-Dateien). Führen Sie die Anwendung erneut aus. (Aber Sie müssen Ihr Gerät gerootet haben)
quelle
Ich habe das ähnliche Problem getroffen. Der Resonanzpunkt ist, dass Sie nicht alle Komponenten der App deinstalliert haben. Meine Lösung lautet: /data/data/com.eg.android.AlipayGphone manuell löschen.
arbeite gut für mich.
Ich hoffe es ist hilfreich für dich!
quelle
Rooting und Zurücksetzen auf die Werkseinstellungen waren für mich keine Option, aber ich konnte eine ältere Version meines APK finden und diese installieren (ich vermute, es war dieselbe, die nicht ordnungsgemäß deinstalliert werden konnte). Nach der erneuten Deinstallation konnte ich neue Versionen installieren.
quelle