Der INSTALL_FAILED_INSUFFICIENT_STORAGE
Fehler ist der Fluch im Leben eines jeden Android-Entwicklers. Dies geschieht unabhängig von der App-Größe oder dem verfügbaren Speicherplatz. Durch einen Neustart des Zielgeräts wird das Problem kurz behoben, es wird jedoch bald wieder angezeigt. Es gibt Hunderte (wenn nicht Tausende) von Message Board-Posts von Leuten, die fragen, warum das Problem auftritt, aber die Leute bei Google schweigen frustrierend zu diesem Thema.
Es gibt eine einfache Problemumgehung. Wenn auf Ihrem Testgerät Android 2.2 oder höher ausgeführt wird, fügen Sie das android:installLocation
Attribut mit dem Wert zur Manifestdatei Ihrer Anwendung hinzu "preferExternal"
. Dadurch wird die App auf dem externen Speicher des Geräts installiert, z. B. auf der SD-Karte eines Telefons.
Zum Beispiel:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.andrewsmith.android.darkness"
android:installLocation="preferExternal"
Dies ist eher ein Pflaster als ein Fix, und es ist möglicherweise nicht ideal, wenn Sie möchten, dass Ihre fertige App im internen Speicher des Geräts installiert wird. Aber es wird zumindest den Entwicklungsprozess viel weniger frustrierend machen.
quelle
Antworten:
Dies ist nur eine vorübergehende Problemumgehung und keine echte Lösung.
Nachdem mir dies passiert war und ich mit den aktuellen Antworten nicht zufrieden war, machte ich mich an die Arbeit, um es aus der AOSP-Quelle herauszufinden. Ich habe eine echte Lösung gefunden.
Erläuterung
Zunächst ein wenig (vereinfachter) Hintergrund zur Installation und Aktualisierung von Android
Das Problem, das die meisten von uns haben, tritt auf, wenn die Anwendung aktualisiert wird, das Löschen der alten APK jedoch fehlschlägt. Was selbst noch nicht dazu führt, dass das Update fehlschlägt, aber zwei APK-Dateien enthält
/data/app
.Wenn Sie das nächste Mal versuchen, die App zu aktualisieren, kann das System die temporäre Datei nicht verschieben, da weder (1.apk) noch (2.apk) leer sind. Da File # renameTo (File) keine Ausnahme auslöst, sondern stattdessen einen booleschen PackageManager zurückgibt, kann nicht festgestellt werden, warum INSTALL_FAILED_INSUFFICIENT_STORAGE zurückgegeben wird, obwohl der Fehler nichts mit der Menge an freiem Speicherplatz zu tun hat.
Lösung
Lauf:
ODER
Deinstallieren Sie die App
Verwenden Sie Ihre bevorzugte Methode, um BEIDE zu löschen :
Stellen Sie sicher, dass nichts anderes zukünftige Installationen auf ähnliche Weise blockiert. In meinem Fall hatte ich ein
/data/app-lib/<full.package.name>-1
Verzeichnis! In diesem Fall funktionierte eine Installation auf der SD-Karte und eine anschließende Verschiebung in den internen Speicher. (Erstellen/data/app-lib/<full.package.name>
ohne-1
Ende.)Warum andere "Lösungen" funktionierten
Der Code für die Installation auf einem externen Speicher unterscheidet sich erheblich, da nicht dieselben Probleme auftreten
Durch die Deinstallation der App wird nur eine Version der APK-Datei gelöscht
/data/app
. Aus diesem Grund können Sie es einmal neu installieren, aber nicht aktualisieren.Die Menge an freiem Speicherplatz in einem Emulator ist nicht wirklich relevant, wenn dieser Fehler auftritt
quelle
function fix_app { adb shell "pm uninstall ${1}; rm -rf /data/app/${1}-*; su -c 'rm -rf /data/app-lib/${1}-*'" }
$ fix_app com.facebook.katana
android:installLocation="preferExternal"
aber alles umsonst, in meinem Fall funktioniert nichts. Ich benutze ein echtes Gerät zum Testen. Was ist die Lösung in diesem Fall?/data/local/tmp
Sie müssen die Speicherkapazität des Android-Emulators erhöhen. Dafür gibt es zwei Möglichkeiten:
Klicken Sie mit der rechten Maustaste auf das Stammverzeichnis Ihres Android-Projekts, gehen Sie zu "Ausführen als" und dann zu "Konfigurationen ausführen ...". Suchen Sie den Knoten "Android-Anwendung" in der Baumstruktur links, wählen Sie Ihr Projekt aus und gehen Sie zur Registerkarte "Ziel" auf der rechten Seite des Fensters. Suchen Sie nach dem Feld "Zusätzliche Emulator-Befehlszeilenoptionen" (manchmal auch Sie). Ich muss das Fenster vergrößern und schließlich "-partition-size 1024" dort einfügen. Klicken Sie auf Übernehmen und dann auf Ausführen, um Ihren Emulator zu verwenden.
Gehen Sie zu den Einstellungen von Eclipse und wählen Sie "Starten". Fügen Sie im Feld "Standardemulatoroption" "Partitionsgröße 1024" hinzu. Klicken Sie auf "Übernehmen" und verwenden Sie Ihren Emulator wie gewohnt.
quelle
Vielen Dank für die Veröffentlichung dieser Frage. Ich habe einige zusätzliche Erkenntnisse, die einigen Entwicklern helfen können.
Ich debugge meine Anwendung auf einem Gerät (nicht auf dem Emulator). Das Gerät hat 21 MB frei
/data
(wie von "df" bei "adb shell" angezeigt) und meine App ist nur 5 MB groß. Ich habe jedoch festgestellt, dass INSTALL_FAILED_INSUFFICIENT_STORAGE für eine Weile verschwindet und dann zurückkommt, wenn ich andere Apps auf dem Gerät lösche (ohne das Telefon neu zu starten oder adbd neu zu starten).Es scheint also, dass das Debuggen meiner 5-MB-App mehr als 20 MB Speicherplatz erfordert
/data
, und außerdem ist jedes Mal, wenn ich meine App debuggte, etwas ausgetreten.Also habe ich "adb shell" gemacht und das GESAMTE
/data
Verzeichnis mit aufgelistetUnd ich schaute auf die 5000-Zeilen-Ausgabe, um zu sehen, wohin der gesamte Raum ging.
Ich habe große Mengen an verschwendetem Speicherplatz auf meinem Gerät im
/data/klog
Verzeichnis in Form alter Protokolldateien aus monatelangen Debugging-Sitzungen entdeckt.Dies waren nicht meine Protokolldateien: Sie wurden von einem Teil der Android-Infrastruktur erstellt.
Ich habe sie gelöscht und sofort 58 MB gespeichert, die in der Einstellungen-App keiner bestimmten App zugeordnet wurden. Ich habe ein kleines Gerät, daher sind 58 MB sehr wichtig (ca. 40%).
Bisher habe ich INSTALL_FAILED_INSUFFICIENT_STORAGE nach vielen Läufen nicht mehr erhalten. Hoffen wir, dass dies das eigentliche Problem war, obwohl das OP vorschlägt, dass sein Gerät viel Platz hatte (aber nicht sagte, wie viel).
Hoffentlich können einige von Ihnen INSTALL_FAILED_INSUFFICIENT_STORAGE auch durch regelmäßiges Löschen entkommen
/data/klog/*
.Oder Sie können zumindest das tun,
ls -a -l -R
um/data
zu sehen, wohin Ihr gesamter Speicherplatz geht, wenn tatsächlich ein (verstecktes) Speicherplatzproblem vorliegt.quelle
ls
ls -alR
du
listet nur Ordner auf.Folgendes hilft:
Öffnen Sie eine Shell für das Gerät
Navigieren Sie zu dem temporären Verzeichnis, in das die eingehende APK zuerst kopiert wird
Listen Sie die verfügbaren Dateien auf und löschen Sie sie nach Bedarf
Dies war bisher für mich auf einem tatsächlichen Gerät zuverlässig.
EDIT: Dies stellte sich als nicht so zuverlässige Lösung wie oben heraus.
Ich habe eine Reihe von Lösungen ausprobiert. Nichts hat wirklich geholfen. Endlich habe ich eine App namens SD Maid gefunden . Das hat geholfen.
Es heißt, dass die Funktionalität auf nicht gerooteten Geräten eingeschränkt ist. Meins ist verwurzelt, also wäre es gut zu sehen, wie effektiv es in diesen Szenarien ist, und wenn es nur ein Zufall wäre, dass es für mich funktioniert (es ist sowieso ein unvorhersehbares Problem).
HINWEIS: Ich habe nichts mit der App zu tun. Habe es gerade mit einer Suche gefunden.
quelle
Ich habe es gelöst, indem ich ein
android:installLocation="auto"
Inside-<manifest>
Tag in die Datei AndroidManifest.xml aufgenommen habe.quelle
Error: ADB exited with exit code 1 adb: failed to install build\app\outputs\apk\app.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE] Error launching application on Android SDK built for x86.
Ich hatte der Manifestdatei der Anwendung eine zusätzliche Zeile hinzugefügt
android:installLocation="preferExternal"
. Durch Verwendung dieser Zeile wird die Installation der App auf dem externen Speicher erzwungen. siehe das folgende Beispiel,quelle
Ein verwandtes Problem auf dem Emulator ist, wenn in der
/data
Partition kein Platz mehr vorhanden ist .Zum Beispiel,
Hier ist eine Beispielansicht des
/data/app
Verzeichnisses:Ich habe die zusätzlichen APK- Dateien entfernt. Es scheint, dass Sie bei jeder Installation eine neue APK-Datei erhalten. Entfernen Sie einfach die zusätzlichen APK-Dateien.
Zum Beispiel,
quelle
In meinem Fall wurde der Fehler durch die
com.android.providers.media
App verursacht . Ich habe dies auf x86 Android Emulator konfrontiert. Was habe ich getan:Zu wenig freier Speicherplatz
/data
Fast alles wurde von einer einzigen App verbraucht! Es ist eine System-App, daher halte ich es für besser, sie nicht zu löschen. Stattdessen habe ich App-Daten bereinigt.
Die Festplatte wurde gelöscht und die App erfolgreich installiert.
quelle
Ich fühle mich ein bisschen komisch, wenn ich das schreibe, aber ich kann nicht 100% sicher sein, dass es in einigen Fällen nicht stimmt (es hat bei mir funktioniert). Wenn Sie die folgenden Symptome hatten:
Versuchen Sie dann Folgendes:
Ich zog meinen Stecker aus der Steckdose und ließ ihn für den GANZEN TAG ruhen. Meine Batterie hat sich etwas erschöpft. Danach habe ich es wieder verbunden und wieder mit dem Debuggen begonnen. Diesmal hat alles gut funktioniert! Und ich meine wirklich WIRKLICH gut, genau wie zuvor.
Ist es möglich, dass dieser Fehler auf batteriebezogene Hardware zurückzuführen ist ? Es fühlt sich immer noch komisch an, so zu denken, aber jetzt trenne ich mein Telefon immer wieder (und für die Nacht) und das Problem kehrte nicht zurück.
quelle
Beantwortung des allerersten Beitrags zu diesem Thema ...
Symptom: Einige Apps werden nicht installiert, da kein Speicherplatz vorhanden ist und in Wirklichkeit sowohl auf dem internen als auch auf dem externen Speicher viel Speicherplatz frei ist !!! Lösung: Deaktivieren Sie standardmäßig die externe Installation.
Stellen Sie die externe Installation standardmäßig so ein:
Macht die Installation auf vielen Apps unmöglich, die nicht extern installiert werden können (z. B. adblock + oder so).
Dann ist die Lösung
Oder
quelle
Ich habe folgendes versucht:
Überprüfen Sie, ob es bei Ihnen genauso funktioniert.
quelle
Samsung Galaxy Ace gibt in seinen Spezifikationen 158 MB internen Speicher an, aber die Kernanwendungen und -dienste verbrauchen ungefähr 110 MB davon (ich habe den Task-Manager auf dem Gerät verwendet, um dies zu überprüfen). Meine App war 52 MB groß, weil sie viele Assets hatte. Nachdem ich einige davon bis auf 45 MB gelöscht hatte, konnte die App problemlos installiert werden. Das Gerät warnte mich immer noch, dass der interne Speicher fast voll war, und ich sollte einige Apps deinstallieren, obwohl ich nur eine App installiert hatte.
Nach der Installation einer Release-Version des APK-Bundles und der anschließenden Deinstallation zeigt mein Gerät 99 MB freien Speicherplatz an, sodass möglicherweise Informationen debuggt werden, die das Gerät überladen. Siehe die Antwort von Louis Semprini .
quelle
In Eclipse
Run -- > Debug Configurations --> Select "target",
und wählen Sie ein bevorzugtes Emulatorziel zum Starten aus.Fügen Sie dann unterhalb dieser "zusätzlichen Emulator-Befehlszeilenoptionen" Folgendes hinzu:
Schließen Sie dann den Emulator und klicken Sie auf das Debug-Symbol, um den von Ihnen ausgewählten bevorzugten Emulator zu starten.
Ich hoffe es hilft...!
quelle
Android Virtual Device Manager
Benutzer. Sie können die Partitionsgröße auf 1024 als "Interner Speicher"disk.dataPartion.size
Ich bin auf dieses Problem mit meinem neuen Nexus 4 und einer mit Adobe AIR erstellten APK gestoßen. Ich hatte bereits Android: installLocation = "PreferExternal" in meinem Manifest. Ich bemerkte, dass ich auch
adb install
mit der-s
Option (Paket auf dem gemeinsam genutzten Massenspeicher wie SD-Karte installieren) anrief, die wie ein Overkill schien.Das Entfernen der
-s
Flagge von hatadb install
das Problem für mich behoben.quelle
Da dieses Problem immer noch besteht, dachte ich, ich würde RacZos Antwort zu Entwicklungszwecken etwas hinzufügen . Wenn Sie nicht das Eclipse- Plugin verwenden oder aus irgendeinem Grund nicht die Quelle, sondern nur die APK-Datei haben, können Sie die Partitionsgröße über die Befehlszeile mit derselben Option erhöhen, wenn Sie den Emulator starten:
Soweit ich weiß, ist diese Option nicht unter developer.android.com dokumentiert. Daher dachte ich, ich würde sie hier veröffentlichen, damit die Leute diese Lösung finden könnten.
quelle
avd
Ich bin auf diese Frage gestoßen, weil ich diesen Fehler beim Verwenden der Sideload Wonder Machine zum Installieren von Apps auf meinem tatsächlichen Telefon erhalten habe. Ich fand das Problem, dass ich mehrere APK-Dateien im Verzeichnis / payload hatte. Ich dachte, dies würde unterstützt, aber als ich alle bis auf eine .apk-Datei entfernte, verschwand der Fehler.
quelle
Deinstallieren Sie die Anwendung einfach über die Befehlszeile vom Emulator oder gehen Sie zu den Einstellungen und deinstallieren Sie die Anwendung. Dies verhindert, dass der Fehler auftritt.
quelle
Wenn Sie ein echtes Gerät verwenden, ist Ihnen einfach der interne Speicher ausgegangen. Gehen Sie einfach zu Android-Einstellungen -> Anwendungen und verschieben Sie einige Apps auf die SD-Karte oder deinstallieren Sie einige Apps.
Wenn Sie den Emulator verwenden, lesen Sie die Antwort von RacZo .
quelle
Ich habe den gleichen Fehler festgestellt, als ich nach einem vollständigen ROM-Update versucht habe, mithilfe der ADB- Shell etwa 50 Apps im SD-Kartenverzeichnis zu installieren :
Einige von ihnen wurden installiert, aber viele sind mit dem Fehler INSTALL_FAILED_INSUFFICIENT_STORAGE fehlgeschlagen. Alle fehlgeschlagenen Apps hatten Platz in ihrem Namen. Ich habe sie stapelweise umbenannt und es erneut versucht. Diesmal hat alles geklappt. Ich habe keinen Neustart durchgeführt oder so. Vielleicht ist dies nicht das Problem, mit dem ihr konfrontiert seid, aber dies könnte jemandem helfen, der mit dem gleichen Problem sucht, mit dem ich konfrontiert bin.
quelle
Emulatorlösung
Öffnen Sie Ihr
.Android
Verzeichnis. Normalerweise in Ihrem Home-Verzeichnis. Gehen Sie dann zuavd
und öffnen Sie das Verzeichnis mit dem Namen der avd, die Sie ändern möchten.Bearbeiten Sie nun die
config.ini
Datei und fügen Sie die folgende Zeile hinzu oder ändern Sie die folgende Zeile:disk.dataPartition.size=1024
Wo
1024
ist die Größe, die Sie in MB verwenden möchten? Speichern Sie die Datei und starten Sie den Emulator mitwipe user data
aktiviert. Ihr Emulator sollte jetzt die neue Größe haben.quelle
Die Lösung ist einfach.
Öffnen Sie den AVD Manager. Bearbeiten Sie Ihre AVD.
Unten im Hardware-Bereich sind einige Eigenschaften mit "Neu ..." und "Löschen" rechts davon aufgeführt.
Drücken Sie Neu. Wählen Sie die Größe der Datenpartition. Auf "512 MB" einstellen (MB ist erforderlich). Und du bist fertig. Wenn weiterhin Probleme auftreten, erhöhen Sie mit derselben Methode auch Ihre System- und Cache-Partitionen.
Hier ist alles dokumentiert: http://developer.android.com/guide/developing/devices/managing-avds.html
quelle
Stellen Sie sicher, dass Sie Ihr Android-Gerät nicht mit USB verbinden, während Sie versuchen, den Emulator auszuführen
quelle
Wenn Sie Ihre Anwendung auf einem Emulator ausführen und dieses Problem weiterhin besteht, überprüfen Sie Ihren Benachrichtigungsmanager. Wenn Ihnen ein Symbol und eine Benachrichtigung über "Telefonspeicher ist voll" angezeigt wird, bedeutet dies, dass Sie bereits so viele Anwendungen auf Ihrem Emulator installiert haben. Deinstallieren Sie mehrere Anwendungen, die Sie derzeit nicht möchten, unter "Einstellungen >> Anwendung verwalten >> Anwendung auswählen >> Deinstallieren".
Das Set.
Führen Sie nun das Programm erneut aus.
quelle
Ich habe diesen Fehler heute erhalten, als ich mein Telefon zum Testen / Debuggen mit Eclipse verwendet habe.
Mein Fehler war, dass ich im Anwendungsnamen das norwegische Sonderzeichen ("æ", "ø", "å") verwendet habe. Als ich den App-Namen überarbeitet habe (mit "o" anstelle von "ø"), wurde die App korrekt installiert.
Wahrscheinlich nicht Ihr Problem, könnte aber für andere Personen, die den gleichen Fehler erhalten, von Bedeutung sein.
quelle
Nachdem ich alles andere in diesem Thread ausprobiert hatte, stellte ich fest, dass mein eigenes Problem darin bestand, dass der Pfad zur APK-Datei zu lang war. Also ging ich in das Verzeichnis, in dem sich die .apk befand, und tat:
anstatt
Und es hat funktioniert ... gut installiert.
Ich dachte nur, das könnte jemand anderem helfen.
quelle
Problemumgehung:
Kompilieren Sie als 2.1 ohne
android:installLocation="preferExternal"
.IN ORDNUNG?
Kompilieren Sie als 2.2 einschließlich
android:installLocation="preferExternal"
.Dies wird weiterhin auf einer SDK-Version unter 8 installiert (das XML-Tag wird ignoriert).
quelle
In meinem Fall wurde dies behoben, indem der erweiterte Speicher von Eclipse vergrößert und der Wert von -Xmx768m in eclipse.ini geändert wurde
quelle
Am Ende habe ich die App vom Gerät deinstalliert und dann wieder in Eclipse installiert. Dies ist ein Problem, das ich bei regelmäßiger Verwendung ständig auf meinem Gerät bekomme, aber heute habe ich diese Nachricht von der Entwicklung erhalten.
quelle
Auch ich hatte das gleiche Problem und habe einen "Factory Data Reset" durchgeführt, der danach einwandfrei funktioniert hat.
quelle
Ich hatte keinen Root-Zugriff auf meinem Telefon und bin nicht darauf vorbereitet, dass meine App auf der SD-Karte installiert wird. 15 MB Speicherplatz sind verfügbar
/data/
und meine Anwendung ist unter 2 MB.Für eine Weile kam ich durch; Bereinigen des Eclipse- Projekts und Neustarten des Telefons, aber schließlich funktionierte das nicht mehr (wahrscheinlich nach einem Update).
Das Bereinigen meines Anwendungscaches hat das Problem für mich gelöst und erfordert keinen Neustart des Telefons oder Deinstallation der App.
Es gibt Anwendungen auf dem Markt, mit denen Sie den Cache mehrerer Anwendungen gleichzeitig leeren können. Suche nach "sauber".
quelle