2010-08-27 3 views
9

Ich stehe dieses Problem und die Lösung für dieses Problem seit den letzten 2 Wochen.Installieren der Anwendung auf SD-Karte in Android SDK 2.2

Im Moment habe ich eine Android-Anwendung für den Client Perpose entwickelt, deren Größe 54 MB ist, von denen 52 MB nur Bilder/Fotos.

[Edit: Ich brauche Bilder zu halten in "ziehbar" -Ordner]

So will ich es in 2.2 SD-Karte auf Android SDK installieren zu, dass ich bereits festgelegt haben android:installLocation="preferExternal" im AndroidManifest.xml Datei. Ich habe256MB SD-Karte erstellt, während ein AVD Erstellen Heap-Größe - 192, ram Größe - 192

aber es zeigt mir immer noch einen Fehler:

[2010-08-27 17:58:28 - demo_test] Failed to upload demo_test.apk on device 'emulator-5554'
[2010-08-27 17:58:28 - demo_test] java.io.IOException: Unable to upload file: No space left on device
[2010-08-27 17:58:28 - demo_test] Launch canceled!

Edit:

alt text

  1. Ist dieses Speicherproblem der internen Speicher oder externen Speicher?
  2. Was muss ich tun, um die Anwendung zu starten und trotzdem mit dem Emulator zu testen?
  3. Wie installiere ich Anwendung in SD-Karte in Android SDK 2.2?
+0

Ich habe Bild des Emulators für die "Memory related Issue" wenn –

+0

Bitte helfen Sie mir ... Ich bin auf der Suche nach Lösung dieses Problems seit den letzten 2 Wochen..so bitte –

+0

Komm schon, du hast war hier eine Weile; Bitte lerne deine Fragen besser zu formatieren! Zweifellos wird es Ihnen helfen, mehr Aufmerksamkeit und Antworten zu bekommen. – Will

Antwort

10

Ist die Größe der SD-Karten wirklich 256MB? Ich vergesse manchmal das Suffix und am Ende .. etwas sehr kleines.

Sie können auch immer die Größe auf 512, 256,266 erhöhen und versuchen Sie es erneut, um sicherzugehen, dass es etwas anderes ist.

Auch Logcat Ausgabe wäre auch nett.

Edit: Wie es scheint, Sie kippen nur „installieren“, um die App auf der SD-Karte, auch wenn Sie 30 + Gigabyte frei auf sich. Die Installation hängt auch vom internen Speicher des Telefons ab, auch in 2.2.

Beispiel: Nexus One hat 512 MB internen Speicher. Das Android-Betriebssystem benötigt den benötigten RAM für Kamera, GPU, Kernel usw., so dass ein Benutzer mit nur ca. 190 MB App-Speicherplatz übrig bleibt (der aufgrund von bereits installierten Apps noch niedriger ist).

HTC Hero auf der anderen Seite hat nur 288 MB internen Speicher, so dass es mit einem sehr kleinen "App Größe RAM".

Je nach Telefon wird die 90-MB-App auf Nexus One auf SD-Karte installiert, wird aber aufgrund von Speicherbeschränkungen nicht auf Hero installiert.

Der Grund, warum Sie diesen Fehler bekommen, ist, dass, nachdem der Android OS den benötigten RAM aus diesen 192MB nimmt, der "app size ram" nicht genug ist, um diese 50 + mb Anwendung zu halten.

Ich dachte, dass installLocation direkt auf SD installieren würde, aber das ist nicht der Fall.

Vidar Vestnes blog bestätigt, was ich oben beschrieben, durch einen Test mit verschiedenen App Größen auf seinem HTC Desire Durchführung ..

+0

@Milan Dank für die Antwort ... gerade jetzt habe ich die "logcat" überprüft, aber kein Fehler wird bei logcat angezeigt –

+0

@Milan Dank für die wirklich tolle und helfende Informationen..aber Ich habe auch Emulator mit 2.2 erstellt, und immer noch den obigen Fehler –

+0

Was ich oben erklärt, ist, wie es auf 2.2 Plattform funktioniert. Das heißt, es gibt keine Möglichkeit, diese Anwendung auf einem Telefon mit so viel Speicher zu installieren. – Milan

1

Sie überprüfen können, ob die SD-Karte richtig montiert ist und genügend Platz ist durch den Lauf

verfügbar
adb shell df 

Befehl im android-sdk/tools es Ihnen zeigt, welche Partitionen derzeit montiert sind, wie groß sie sind und wie viel freien Speicherplatz ist

+0

/dev: 95764K insgesamt, 0K verwendet, 95764K verfügbar (Blockgröße 4096) /mnt/asec: 95764K insgesamt, 0K verwendet, 95764K verfügbar (Blockgröße 4096) /System: 77568K insgesamt, 77568K verwendet, 0K verfügbar (Blockgröße 4096) /Daten: 65536K insgesamt, 21112K verwendet, 44424K verfügbar (Blockgröße 4096) /Cache: 65536K insgesamt , 1156K verwendet, 64380K verfügbar (Blockgröße 4096) /mnt/sdcard: 258064K insgesamt, 1K verwendet, 258062K verfügbar (Blockgröße 512) /mnt/secure/asec: 258064K insgesamt, 1K verwendet, 258062K verfügbar (Blockgröße 512) –

5

ich schlage vor, Sie versuchen, Erhöhen des internen Speichers (Screenshot sagt 43MB), falls die .apk zuerst dort kopiert wird, bevor sie vom Betriebssystem auf der SD-Karte installiert wird.

+0

Sie benötigen intern genügend Speicherplatz, um die .apk zu laden, bevor sie auf die SD-Karte verschoben wird. Bitte erhöhen Sie den internen Speicher für den Emulator. – smith324

+0

Gorge @ Chris324 Wie erhöhe ich den internen Speicher? –

+0

Gorge @ Chris324 ya Sie Leute haben Recht, aber angenommen, wenn ich den internen Speicher des Emulators vergrößern und Erfolg haben, es auf dem Emulator dann zu laufen, was ist mit dem internen Gedächtnisinkrement? ist es möglich, die Größe des internen Speichers des Telefons zu erhöhen? –

9

Ein besserer Ansatz wäre, Ihre Ressourcen in ein eigenes Verzeichnis auf der SD-Karte zu setzen. Dann kann Ihre App sie laden, wenn sie benötigt wird.

+0

Ich zweite dies. Es ist nicht möglich, eine 52MB .apk mit Bildern zu verteilen – HXCaine

+0

@ T3Road Ich muss Bilder in "drawable" Ordner zu halten ..kann sie in SD-Karte .. und Danke für die Antwort –

3

Angenommen, Sie benötigen die Bilder auf Ihrem Gerät und nicht in der Cloud. Der einfachste Weg wäre, die App mit einem Server zu verbinden und eine ZIP herunterzuladen, die alle Bilder beim ersten Start enthält. Bis Geräte eine größere "RAM-Größe" bekommen, ist dies möglicherweise die einzige Lösung.

2

können Sie verwenden, um die folgenden:

adb shell pm setInstallLocation 2 

aus dem Android-sdk/tools den Emulator zu zwingen, auf die SD-Karte zu installieren, unabhängig von ihrer Größe - vorzugsweise groß genug, um Ihre App zu halten (s), offensichtlich.

Wenn Sie wieder auf den Standardinstallationspfad (Telefon-App-Speicher), tun gehen:

adb shell pm setInstallLocation 0 

Sie können auch verwenden, um diese adb Befehle auf Ihrem Smartphone/Tablet.

Sobald Sie den Emulator zur Installation auf der SD-Karte eingerichtet haben, können Sie Einstellungen -> Anwendungen -> Anwendungen verwalten wählen, die App auswählen, die Sie auf der SD-Karte sein möchten, und die "Verschieben auf SD-Karte "ist nicht mehr ausgegraut.