2010-08-27 108 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卡“按钮将不再变灰。