2010-08-27 105 views
9

我正面臨這個問題,並且自上個2周以來爲這個問題尋找解決方案。在Android SD卡上安裝應用程序sdk 2.2

現在我已經爲客戶端perpose開發了一個android應用程序,其大小爲54 MB,其中只有52 MB的圖片/照片。

[編輯:我需要保持圖像「繪製」文件夾]

所以我想在Android SDK 2.2 SD卡的,我已經在AndroidManifest.xml設置android:installLocation="preferExternal"進行安裝文件。我創建256MB SD卡,同時創造一個AVD,堆大小 - 192RAM大小 - 192

,但它仍然顯示我的錯誤:

[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!

編輯:

alt text

  1. 這是與內存有關的內存還是外部內存問題?
  2. 我要做什麼來運行應用程序,仍然使用模擬器測試?
  3. 我該如何在Android sdk 2.2的sd-card中安裝應用程序?
+0

我上傳了「內存相關問題」的模擬器的圖像,如果有的話 – 2010-08-27 13:39:05

+0

請幫助我...我在尋找這個問題的解決方案以來的最後2周..所以請 – 2010-08-28 06:25:38

+0

來吧,你已經在這裏過了一段時間;請學習更好地設置您的問題的格式!毫無疑問,它會幫助你獲得更多的關注和答案。 – Will 2010-08-31 11:44:05

回答

10

sd-cards大小真的是256MB嗎?我有時忘記後綴,並最終得到..非常小的東西。

您也可以將尺寸始終提高到512,256,266,然後再次嘗試確定它是否是別的。

此外,Logcat輸出也會很好。

編輯:,因爲它似乎,你只是,即使你有30 +技嘉免費上「安裝」在SD卡的應用程序。即使在2.2版本中,安裝也取決於手機的內部存儲器。

示例:Nexus one具有512mb的內部存儲器。 android操作系統爲相機,gpu,內核等提供了所需的內存,只留下了大約190MB的應用空間(由於應用已經安裝等原因,這個空間會更小)。

另一方面,HTC Hero只有288mb的內存,留下一個非常小的「應用程序大小內存」。

根據手機的不同,90mb的應用程序會在nexus one上安裝到SDcard,但由於內存限制,不會在Hero上。

你得到這個錯誤的原因是,在android os從這些192MB中取出所需的RAM後,「應用程序大小ram」不足以容納50 + mb應用程序。

我認爲installLocation會直接安裝到SD,但事實並非如此。

Vidar Vestnes blog證實了上述我通過執行對他的HTC Desire的不同應用程序的大小測試..

+0

@Milan thanx的答案...剛纔我檢查了「logcat」,但沒有錯誤顯示在logcat – 2010-08-28 09:44:01

+0

@Milan thanx爲真正偉大和幫助信息..但我也用2.2創建了模擬器,並且仍然得到了上面的錯誤 – 2010-08-30 06:38:12

+0

我上面解釋的是它在2.2平臺上的工作原理。也就是說,沒有辦法在具有這麼多內存的手機上安裝該應用程序。 – Milan 2010-08-30 09:49:27

1

你可以檢查SD卡真的安裝和足夠的空間在運行

adb shell df 
在Android的SDK/tools目錄

命令 它顯示了你哪些分區當前安裝的,可有多大,他們都和多少可用空間

+0

/dev:95764K總計,0K used,95764K available(block size 4096) /mnt/asec:95764K total, 0K使用,95764K可用(塊大小4096) /系統:總共77568K,使用77568K,可用0K(塊大小4096) /數據:總共65536K,使用21112K,可用44424K(塊大小4096) /高速緩存:總計65536K ,使用1156K,可用64380K(塊大小4096) /mnt/sdcard:總計258064K,使用1K,可用258062K(塊大小512) /mnt/secure/asec:總共258064K,使用1K,可用258062K(塊大小512 ) – 2010-08-27 13:35:42

5

我建議你試試增加可用的內部存儲器(屏幕截圖爲43MB),以防在.apk被OS安裝到SD卡之前首先將.apk複製到那裏。

+0

您需要在內部有足夠的空間才能將.apk加載到SD卡中。請增加模擬器的內部存儲器。 – smith324 2010-08-27 15:03:05

+0

Gorge @ Chris324我如何增加內存? – 2010-08-28 04:36:49

+0

Gorge @ Chris324你的人是對的,但是假設如果我增加模擬器的內部存儲器並且成功在模擬器上運行它,那麼內部存儲器增量如何?是否可以增加手機的內存大小? – 2010-08-28 05:07:34

9

更好的方法是將您的資源放在SD卡上的自己的目錄中。然後,您的應用程序可以在需要時加載它們。

+0

我第二個這個。這是不可行的,分發一個52MB .apk充滿了圖像 – HXCaine 2010-08-28 12:41:08

+0

@ T3Road我需要保持圖像在「可繪製」的文件夾..不能把它們放在SD卡...和thanx的答案 – 2010-08-30 04:40:31

3

假設您需要設備上的圖像而不是雲上的圖像,最簡單的方法是將應用程序連接到您的服務器並在第一次運行時下載包含所有圖像的zip文件。在設備獲得更大的「應用程序RAM大小」之前,這可能是您唯一的解決方案。

2

您可以使用以下方法:

adb shell pm setInstallLocation 2 

從Android的SDK/tools目錄迫使仿真器安裝到SD卡,不論其大小 - 最好是大到足以容納您的應用程序(S ),顯然。

如果你想回到默認的安裝位置(手機應用程序內存),這樣做:

adb shell pm setInstallLocation 0 

您也可以在您的手機/平板電腦使用這些ADB命令。

一旦你設置了模擬器安裝到SD卡上,你可以進入設置 - >應用程序 - >管理應用程序,選擇你想要在SD卡上的應用程序和「移動到SD卡「按鈕將不再變灰。