Android INSTALL_FAILED_UID_CHANGED

74

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?

AdamM
quelle
4
Sie müssen Anwendungsdaten aus /data/data/your.package.nameund löschen /data/app, anscheinend wurden sie nicht vollständig deinstalliert.
Marek Sebera
Siehe diese Antwort unten stackoverflow.com/questions/16277422/…
asok Buzz
Dies löste mein Problem: siehe den Link
Sayem

Antworten:

77

Manchmal müssen Sie auch die Datenordner deinstallieren. Für mich hatte ich ein Paket im Userspace von com.kikin.ctsund auch ein Ordnerverzeichnis in /data/data/com.kikin.cts. Wird immer wieder abgerufen INSTALL_FAILED_UID_CHANGED, aber nach dem Entfernen des Datenordners ist der Fehler behoben.

Ehtesh Choudhury
quelle
11
Ich habe das gleiche Problem, aber als ich versuchte, den Ordner zu löschen, erhalte ich die Berechtigung verweigert Fehler
Sam
7
Mein Gerät wird in / data / local / tmp / com (...) installiert, und diese Methode funktioniert nicht . (HTC One, IntelliJ 13)
Nilzor
2
Irgendeine Lösung gefunden? Ich kann mein Projekt normal von meinem Mac aus erstellen. Aber als ich zu meinem Windows-PC wechselte, bekam ich diesen Fehler. Nachdem ich das Projekt von meinem Windows-PC aus aufgebaut habe, ist mein Gerät kaputt und ich kann nicht mehr mit meinem Mac bauen, da ich den gleichen Fehler bekomme.
Luciano
Bei Geräten ohne Rootberechtigung müssen wir möglicherweise die schlechteste Lösung ausprobieren: Werkseinstellungen wiederherstellen.
RxRead
Es war tatsächlich adb shell rm -R / data / data / <app-package>, da es sich um einen Ordner handelt, sodass -R den Ordner und alles darin löscht.
Christoph
26

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:

  1. Ändern Sie die Anwendungs-ID der App. Über diesen Link können Sie die Anwendungs- ID ändern.
  2. Erstellen und installieren Sie die App. Die App wird erfolgreich installiert, da sie als neue App behandelt wird.
  3. Deinstallieren Sie nun diese App. Welches wird die Daten löschen.
  4. Ändern Sie nun die ApplicationId auf die vorherige.
  5. Erstellen und installieren. Magic .. Es wird installiert.
Rajesh Hegde
quelle
Genius. Ich werde es ausprobieren.
Bonnyz
2
Nein, das wird es nicht. Hat mir nicht geholfen.
Roman Minenok
Möglicherweise muss das Telefon neu gestartet werden, bevor die Deinstallation Nr. 3 durchgeführt werden kann.
VinceStyling
Vielen Dank! Ich habe kotlin 1.0.0-beta-1083 verwendet, es auf 1.0.0-beta-1103 umgestellt und dann Ihre Lösung angewendet (beides muss gehen, gruseliger Fehler) und das Problem behoben!
Deepscorn
1
Es funktioniert bei mir nur für den Fall, dass Sie das Gerät nach Schritt 3 und vor 5 neu starten. Aber es funktioniert! Cool!
SILINIK
17

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.

hemantsb
quelle
3
Dieser schien zu funktionieren, ich startete das Gerät neu, versuchte es erneut
auszuführen
17
@adamm Das scheint bei mir nicht zu funktionieren. Ich vermute, es hängt mit dem Mittagessen zusammen. Erinnerst du dich, was du an diesem Tag gegessen hast? : p
Nilzor
60
Ich aß Pizza, Nudeln, Sandwich nichts funktionierte für mich
Luciano
6

Sie haben wahrscheinlich eine SharedUserID eingeführt, die dies verursacht.

Kitesurfer
quelle
2
Ich habe keine gemeinsame Benutzer-ID in meiner App verwendet
AdamM
Absolut! Dies war der Grund in meinem Fall :), Danke.
Gautam Jain
Das war das Problem für mich. Ich danke Ihnen lieber Herr. :)
m.rohail.akram
3

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.

Ayush Goyal
quelle
4
Kaum eine Lösung, wenn Sie nicht einfach etwas zusammen hacken ... so etwas wie einen Geruch in Ihrem Haus haben und das Problem durch Umzug lösen.
Patrick
6
Google Play erkennt es nicht nur als Telefon, sondern auch als separate Anwendung. Es ist besser, das Telefon zu ändern, als den Paketnamen zu ändern, da meine App bereits Tausende von Benutzern hat.
Seshu Vinay
@ SheshuVinay richtig, nicht für die Produktion empfohlen. Kann aber verwendet werden, bis die App live ist.
Ayush Goyal
3

Ich habe Root auf meinem Nexus 5, aber nichts hat funktioniert, daher musste ich einen Werksreset über die Einstellungen durchführen, die funktionierten.

FinHead
quelle
3

Für mich wurde der Trick gemacht, indem "Apps über USB überprüfen" im Abschnitt "Entwickleroptionen" deaktiviert wurde.

Danail
quelle
1
Danke für diesen einen. Der Gedanke, mein Gerät auf die Werkseinstellungen zurücksetzen zu müssen, machte mir langsam Sorgen.
Janne Oksanen
3

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.

Kanji Sketch Pad Arcuate
quelle
3

In den meisten Fällen INSTALL_FAILED_DEXOPToder INSTALL_FAILED_UID_CHANGEDbedeutet 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" 
Tomrozb
quelle
2

Das hat bei mir funktioniert:

adb shell rm -rf /system/app/<package.name>
Marioosh
quelle
1
Dies scheint nicht für mich zu funktionieren. Immer noch den gleichen Fehler
Ajit Pratap Singh
2

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 .

Wells
quelle
2

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

Shahryar Mozumder
quelle
2

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.

Sofi Software LLC
quelle
1

Okay, für mein LG NEXUS 4 ist hier die Lösung verwurzelt : (

  • Stellen Sie sicher, dass Sie irgendwo Ihre funktionierende App apk signiert oder nicht signiert haben.

und

  • Sie haben diese Datei von Ihrem Telefon deinstalliert (falls vorhanden).

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?

toter Fisch
quelle
1

Ich habe gelöscht /data/data/my.package.nameund das /data/app/my.package.name.apkProblem bleibt bestehen.

Ich habe jedoch einen Ordner gefunden /data/user/0/my.package.name, ihn gelöscht und das Problem behoben.

Fantouch
quelle
0

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.

FX
quelle
1
Ich habe die App bereits gelöscht. Der Fehler wird angezeigt, wenn ich versuche, sie erneut zu installieren. Auch alle meine Debugging wurde auf dem gleichen Computer durchgeführt
AdamM
Nun, anscheinend haben Sie das trotzdem gelöst. Das einzige Mal, dass ich diesen Fehler selbst gesehen habe, war, als ich versuchte, auf einem anderen Computer zu debuggen;)
FX
Ich bin mir nicht sicher, welche der von mir verwendeten Methoden das Problem gelöst hat. Ich habe versucht, App-Datenordner zu löschen, das Gerät neu zu starten, das Eclipse-Reinigungsprojekt durchzuführen, das Projekt umzubenennen, aber es wurde immer noch ein Fehler angezeigt, aber als ich vom Mittagessen zurückkam, funktionierte es wieder. Hoffe nur, dass ich es nicht wieder bekomme, da es keine solide Lösung für dieses Problem zu geben
scheint
2
Sieht so aus, als wäre es Zeit für mich zu Mittag zu essen - der gleiche Fehler und nichts hat geholfen
vir uns
0

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.

Sohn Pham
quelle
0

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)

Mete
quelle
0

Verwenden

ADB Shell

Gehe zur Muschel.
Führen Sie dann den folgenden Befehl aus:

rm -rf / data / data / package name

Bitte ersetzen Sie den Paketnamen mit Ihrem eigenen, z. B. com.map.map

RxRead
quelle
0

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.

verwirrt
quelle
0

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

  • Die Installation derselben App mit einer anderen ID hat funktioniert
  • Das Installieren einer anderen App mit der vorherigen ID funktioniert nicht

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

Rick77
quelle
0

Für mich war da ein bisschen mehr dran. Einfach zu entfernen /data/data/appfolderhat nicht geholfen.

Der zusätzliche Grund war, dass meine externen Bibliotheken nicht in der .apkDatei enthalten waren, da der Name des Ordners lib anstelle von libs war . Dies hat [INSTALL_FAILED_DEXOPT]während der apkInstallation gefolgt von [INSTALL_FAILED_UID_CHANGED].

Das Ändern des libs-Ordnernamens hat in diesem Fall für mich funktioniert.

RambleTamble
quelle
0

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 pmBefehl verwenden, um dies zu tun:

  1. Lauf adb shell
  2. Ausführen pm uninstall <app name>(dh com.example.myapp)
  3. Ausführen 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 pmBefehl funktioniert dies jedoch.

Versuchte es auf einem "Nexus 5" und auf einem "OnePlus One".

ifeins
quelle
0

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)

Asok Buzz
quelle
0

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!

DreamRunner
quelle
-1

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.

user87628
quelle