Android SDK-Ordner beansprucht viel Speicherplatz. Müssen wir alle System-Images behalten?


247

Auf meiner Festplatte im Android SDK-Ordner stapeln sich viele Systemabbilder. Ich benutze den Emulator kaum. Kann einmal in 6 Monaten sein. Der größte Teil meiner Entwicklung erfolgt direkt auf dem Gerät. Ich wollte überprüfen, ob sich das Entfernen der Systemabbilder (zumindest für das alte APIS, dh <22) auf die Entwicklung auswirkt.

Auch der unten gezeigte Google Apis-Ordner. Sollte ich es für alle Versionen behalten oder nur die in der neuesten Version ausreichen?

Geben Sie hier die Bildbeschreibung ein

Der obige Screenshot stammt vom WinDirStat-Tool. - https://windirstat.net


Vielen Dank! Was ist mit dem Ordner "google_apis"? Kann ich diese auch entfernen? Wird sich das auf mein Debugging auf dem Gerät auswirken?
AndroidMechanic - Viral Patel

25
Wenn jemand interessiert war, heißt der Speicherplatzanalysator auf dem Image WinDirStat .
Tomáš Zato - Wiedereinsetzung Monica

4
Randnotiz: So einfach wie ein du-sh * unter Linux!
User3

unter linux um die größten dirs zu sehen: du -m ~ / src / android-sdk-linux | sort -n | tail -100
Scott Stensland

@lijo aktualisiert die Frage
AndroidMechanic - Viral Patel

Antworten:


204

System-Images sind vorinstallierte Android-Betriebssysteme und werden nur von Emulatoren verwendet. Wenn Sie Ihr echtes Android-Gerät zum Debuggen verwenden, benötigen Sie diese nicht mehr, sodass Sie sie alle entfernen können.

Der sauberste Weg, sie zu entfernen, ist die Verwendung von SDK Manager. Öffnen Sie den SDK-Manager, deaktivieren Sie diese Systemabbilder und wenden Sie sie an.

Sie können auch andere Komponenten (z. B. alte SDK-Level) entfernen, die nicht von Nutzen sind.


Vielen Dank für die ausführliche Antwort abforce ... macht es klar. Ein letzter Zweifel. Der google_apis-Ordner, der in jeder Android-Version im obigen Screenshot zu sehen ist, wird auch nur für die System-Images benötigt, oder? können sie auch entfernt werden?
AndroidMechanic - Viral Patel

können wir diese Datei zu anderen Laufwerk verschieben, wenn ja dann die Bilder fertig Post , was alle Einstellung Bedürfnisse zu bewegen
sameer

@sameer Sie können es verschieben und dann Ihre IDE auf den SDK-Manager richten. Ich habe das einmal versucht, aber es dauerte 5 Minuten, bis meine Eclipse jedes Mal geöffnet wurde. Durch das Löschen der Systemabbilder konnte ich 40 GB auf meiner SSD sparen!
Demonslay335

In meinem SDK-Manager befinden sich viele Android SDK-Build-Tools. Das Löschen alter Revisionen kann zu Fehlern führen oder die Leistung beeinträchtigen.
Shima Erfan

140

Sie müssen die Systemabbilder nur behalten, wenn Sie den Emulator auf Ihrem Desktop verwenden möchten. Außerdem können Sie andere unerwünschte Inhalte entfernen, um Speicherplatz freizugeben .

Als Antwort auf meine eigene Frage hinzufügen, da ich dies mehr als ein paar Mal den Leuten in meinem Team erzählen musste. Daher diese Antwort als Referenz, um sie mit anderen Neugierigen zu teilen.

In den letzten Wochen haben mich mehrere Kollegen gefragt, wie ich das unerwünschte Material sicher entfernen kann, um Speicherplatz freizugeben (die meisten von ihnen waren Anfänger). Ich habe sie auf diese Frage umgeleitet, aber sie sind für Schritte zu mir zurückgekommen. Für Android-Anfänger gibt es hier eine Schritt-für-Schritt-Anleitung, um unerwünschte Dinge sicher zu entfernen.

Hinweis

  • Löschen Sie nicht blind alles direkt von der Festplatte, von dem Sie glauben, dass es nicht erforderlich ist, es zu belegen. Ich habe das einmal gemacht und musste erneut herunterladen.
  • Stellen Sie sicher, dass Sie eine Liste aller aktiven Projekte mit der Art von Emulatoren (falls vorhanden) und API-Ebenen und Build-Tools haben, die erforderlich sind, damit diese weiterhin ordnungsgemäß arbeiten / kompilieren können.

Stellen Sie zunächst sicher, dass Sie keine Emulatoren verwenden und Ihre Entwicklung immer auf einem physischen Gerät durchführen. Wenn Sie Emulatoren benötigen, notieren Sie sich die API-Ebenen und den Typ der benötigten Emulatoren. Entfernen Sie diese nicht. Für den Rest folgen Sie den folgenden Schritten:

Schritte zum sicheren Entfernen unerwünschter Inhalte aus dem Android SDK-Ordner auf der Festplatte

  1. Öffnen Sie den eigenständigen Android SDK-Manager. Führen Sie zum Öffnen einen der folgenden Schritte aus:
  • Klicken Sie auf die Schaltfläche SDK Manager in der Symbolleiste in Android Studio oder Eclipse
  • Gehen Sie in Android Studio zu den Einstellungen und suchen Sie nach "Android SDK". Klicken Sie auf Android SDK -> "Standalone SDK Manager öffnen".
  • Öffnen Sie in Eclipse das Menü "Fenster" und wählen Sie "Android SDK Manager".
  • Navigieren Sie zum Speicherort des android-sdk-Verzeichnisses auf Ihrem Computer und führen Sie "SDK Manager.exe" aus.

.

  1. Deaktivieren Sie alle Elemente, die mit "System Image" enden. Jede API-Ebene verfügt über mehrere. Falls Sie welche benötigen und die Liste bereits erstellt haben, lassen Sie sie überprüft, um zu vermeiden, dass sie verloren gehen und erneut heruntergeladen werden müssen.

.

  1. Optional (kann dazu beitragen, geringfügig mehr Speicherplatz zu sparen): Um mehr Speicherplatz freizugeben, können Sie auch nicht erforderliche API-Ebenen vollständig deaktivieren. Seien Sie erneut vorsichtig, um zu vermeiden, dass Sie etwas erneut herunterladen, das Sie tatsächlich in anderen Projekten verwenden.

.

  1. Stellen Sie am Ende sicher, dass Sie mindestens Folgendes haben (siehe Abbildung unten), damit die verbleibenden API-Ebenen nahtlos mit Ihrem physischen Gerät zusammenarbeiten können.

Am Ende sollten die sauberen, auf Android SDK installierten Komponenten im SDK-Manager ungefähr so ​​aussehen.

Geben Sie hier die Bildbeschreibung ein


9
Das Entfernen von Systemabbildern im SDK-Manager ist die sauberste Lösung. Dies sollte zumindest mehr positive Stimmen haben oder sogar die akzeptierte Antwort sein.
Levite

4
Danke @Levit, dies ist eine Antwort auf meine eigene Frage, die ich später gepostet habe, weil ich dachte, die Leute würden davon profitieren, wenn sie diesen Ansatz kennen. Die Antwort, die ich als akzeptiert markiert habe, hat mir damals tatsächlich geholfen.
AndroidMechanic - Viral Patel

1
Das war sehr hilfreich, danke. Die einzige Änderung an Ihren Schritten, die ich vorschlagen würde, ist Schritt 2. Sie möchten die Elemente überprüfen, die Sie entfernen möchten, und dann unten rechts auf die Schaltfläche Pakete löschen klicken. Danke noch einmal!
Adam Plocher

Vielen Dank, ich wusste nicht, dass der SDK Emulator-Bilder herunterlädt (mein Mac weinte, dass der Speicherplatz knapp wurde, bis ich diesen Beitrag sah).
ScarletMerlin

Die Frage lautet " Müssen wir alle Systemabbilder behalten? " Und beantwortet diese Frage nicht.
user34660

8

Ich hatte 20,8 GB im Ordner C: \ Users \ ggo \ AppData \ Local \ Android \ Sdk \ system-images (6 Android-Images: - android-10 - android-15 - android-21 - android-23 - android-25 - Android-26).

Ich habe den Ordner C: \ Users \ ggo \ AppData \ Local \ Android \ Sdk \ system-images komprimiert.

Jetzt dauert es nur noch 4,65 GB.

C: \ Benutzer \ ggo \ AppData \ Local \ Android \ Sdk \ System-Images

Ich habe bis jetzt kein Problem festgestellt ...

Die Komprimierung scheint von 2/3 bis 6 zu variieren, manchmal viel mehr:

Android-10

Android-23

Android-25

Android-26


1
Wie hast du es komprimiert?
krv

1
Klicken Sie mit der rechten Maustaste auf den zu komprimierenden Ordner (System-Images-Ordner hier) => Eigenschaften => Erweitert => Aktivieren Sie "Inhalte komprimieren, um Speicherplatz zu sparen" => OK => Übernehmen => Wählen Sie "Änderung auf diesen Ordner, Unterordner und Dateien anwenden" "(sollte standardmäßig ausgewählt sein), und klicken Sie auf OK. (Möglicherweise ist es besser, Android Studio zu beenden und die aktuell ausgeführten Emulatoren vor dem Komprimieren zu schließen, da einige Dateien möglicherweise gesperrt sind.)
Ggo

3
Dies wirkt sich auf die Leistung aus. Dies gilt nur für selten verwendete Dateien (ausgenommen bereits komprimierte Dateien wie Foto, Video, Zip, JAR usw.).
Leon

6

Ich empfehle zwei Schritte, um das aufgeblähte SDK-Problem zu beheben.

Zuerst habe ich alle bis auf zwei Versionen von Android entfernt:

  1. Die aktuelle Version, zB 6.0 Marshmallow zum jetzigen Zeitpunkt. Diese Version soll die neuesten und besten Versionen der aktuellen Nexus-Handys sowie einige andere Marken testen und weiterentwickeln.

  2. Eine ältere Version, zB 4.04 Ice Cream Sandwich. Dies dient der Kompatibilität für die überwiegende Mehrheit der Mobilteile. Sie verlieren einige Funktionen der neueren Versionen, erhalten jedoch den kleinsten gemeinsamen Nenner der Kompatibilität.

Zweitens entfernte ich die Emulatoren und behielt nur die beiden oben genannten. Ich habe ihm gesagt, dass er nicht den gesamten Systemstatus auf der Festplatte speichern soll, was tatsächlich warnt, dass Sie viel Speicherplatz beanspruchen werden, obwohl dies den Start beschleunigt. Starten Sie einfach den Emulator, bevor Sie morgens Ihren Kaffee kochen :)

Wenn das zu viel Platz ist, entfernen Sie die Emulatoren vollständig. Holen Sie sich bei Ebay ein paar ältere Mobilteile, die Ihnen alle benötigten Testplattformen bieten. Sie müssen nicht einmal voll funktionsfähig sein - viele Apps benötigen beispielsweise keine SIM- und Mobilfunkverbindung.

Meine Android-Umgebung nahm auf meinem 128-Gig-Macbook Air 32 Gigs ein. Konnte das nicht weiter machen. Eines Tages werden sie Terabyte Macbook Airs machen, aber bis dahin müssen sie abnehmen.


Die ursprüngliche Frage lautet "Der größte Teil meiner Entwicklung erfolgt direkt auf dem Gerät ". Für alle, die einen Emulator verwenden, ist dies jedoch die einzige Antwort auf die Frage " Müssen wir alle Systemabbilder behalten? ".
user34660

5

Dies ist das Minimum, das ich für die tägliche Android-Entwicklung (einschließlich Produktionscode) aufbewahre. Die neuesten Versionen von API 25 bis API 27 (Nougat bis Android P) sind nur enthalten, und Sie können hervorragend damit arbeiten.

  • Um noch mehr zu minimieren, behalten Sie einfach eine der folgenden Versionen bei und behalten Sie eine niedrigere Version bei, dh API 16 mit denselben heruntergeladenen Dateien wie unten.


4

Es gibt die Möglichkeit, das System-Image sicher zu entfernen

Gehen Sie in SDK Manager in der Symbolleiste:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Gehen Sie in Android SDK:

Geben Sie hier die Bildbeschreibung ein

Deaktivieren Sie auf der Registerkarte SDK-Plattformen, welche Plattform Sie deinstallieren möchten:

Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf OK und bestätigen Sie das Löschen:

Geben Sie hier die Bildbeschreibung ein


1

Zusätzlich zu den anderen Antworten enthält das folgende Verzeichnis löschbare Systemabbilder auf einem Mac für Android Studio 2.3.3. Ich konnte die Verzeichnisse android-16 und android-17 problemlos löschen, da ich keine Emulatoren hatte, die sie verwendeten. (Ich habe den Android-24 behalten, der in Gebrauch war.)

$ pwd
/Users/gareth/Library/Android/sdk/system-images

$ du -h
2.5G    ./android-16/default/x86
2.5G    ./android-16/default
2.5G    ./android-16/google_apis/x86
2.5G    ./android-16/google_apis
5.1G    ./android-16
2.5G    ./android-17/default/x86
2.5G    ./android-17/default
2.5G    ./android-17
3.0G    ./android-24/default/x86_64
3.0G    ./android-24/default
3.0G    ./android-24
 11G    .

1

Durch das Löschen aller Emulatoren wird der Speicher manchmal nicht auf unsere Erwartungen reduziert. Öffnen Sie also den unten angegebenen Pfad in Ihrem Laufwerk

C: \ Benutzer {Benutzername} .android \ avd

In diesem AVD-Ordner können Sie alle AvDs anzeigen, die Sie zuvor erstellt haben. Sie müssen also alle AVDs löschen, die alle nicht verwendeten Leerzeichen entfernen, die von Ihrem Emulator erfasst werden. Dann erstellen Sie den neuen Emulator für Ihre Arbeit.


0

In diesem Ordner befinden sich alle Emulatorbilder. Wenn Sie keinen Emulator verwenden, können Sie diesen Ordner löschen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.