9

自过去 2 周以来,我正面临这个问题并为这个问题寻找解决方案。

现在我已经为客户端开发了一个 android 应用程序,其大小为 54 MB,其中只有 52 MB 的图像/照片。

[编辑:我需要将图像保存在“drawable”文件夹中]

所以我想将它安装在 Android SDK 2.2 的 sd 卡中,因为我已经android:installLocation="preferExternal"在 AndroidManifest.xml 文件中设置了它。我在创建 avd 时创建了256MB sd 卡,堆大小 - 192内存大小 - 192

但它仍然向我显示一个错误:

[2010-08-27 17:58:28 - demo_test] 无法在设备“emulator-5554”上上传 demo_test.apk
[2010-08-27 17:58:28 - demo_test] java.io.IOException:无法上传文件:设备上没有剩余空间
[2010-08-27 17:58:28 - demo_test] 启动已取消!

编辑:

替代文字

  1. 这是内存或外部内存的内存相关问题吗?
  2. 我必须做什么才能运行应用程序并仍然使用模拟器进行测试?
  3. 如何在 Android sdk 2.2 的 sd 卡中安装应用程序?
4

6 回答 6

10

SD卡大小真的是256MB吗?我有时会忘记后缀并最终得到.. 一些非常小的东西。

您也可以随时将尺寸提高到 512、256,266 并再次尝试确定它是其他东西。

此外,Logcat 的输出也会很好。

编辑: 看起来,即使你有 30+GB 的免费空间,你也不能只在 SD 卡上“安装”应用程序。即使在 2.2 中,安装也取决于手机的内部存储器。

示例:Nexus one 有 512mb 内部存储器。android 操作系统为相机、gpu、内核等占用所需的内存,使用户只有大约 190MB 的应用程序空间(由于已经安装了应用程序等,这个空间会更低)。

另一方面,HTC Hero 只有 288mb 的内存,留给它的“应用程序大小的内存”非常小。

根据手机的不同,90mb 的应用程序会安装到 nexus one 上的 SD 卡上,但由于内存限制,不会安装到 Hero 上。

您收到该错误的原因是,在 android 操作系统从 192MB 中取出所需的 ram 之后,“应用程序大小 ram”不足以容纳 50+mb 的应用程序。

我以为 installLocation 会直接安装到 SD,但事实并非如此。

Vidar Vestnes 博客通过在他的 HTC Desire 上使用不同大小的应用程序进行测试,证实了我上面描述的内容。

于 2010-08-27T13:14:03.447 回答
9

更好的方法是将您的资源放在 SD 卡上自己的目录中。然后您的应用程序可以在需要时加载它们。

于 2010-08-28T12:26:57.387 回答
5

我建议您尝试增加可用的内部内存(屏幕截图显示为 43MB),以防 .apk 在被操作系统安装到 SD 卡之前先被复制到那里。

于 2010-08-27T14:52:08.840 回答
3

假设您需要设备上而不是云上的图像,最简单的方法是让应用程序连接到您的服务器并在第一次运行时下载包含所有图像的 zip。在设备获得更大的“应用程序内存大小”之前,这可能是您唯一的解决方案。

于 2010-09-06T05:32:26.707 回答
2

您可以使用以下内容:

adb shell pm setInstallLocation 2

从 android-sdk/tools 目录强制模拟器安装到你的 sd 卡,不管它的大小——显然,最好足够大来容纳你的应用程序。

如果要返回默认安装位置(手机应用程序内存),请执行以下操作:

adb shell pm setInstallLocation 0

您还可以在手机/平板电脑上使用这些 adb 命令。

设置好要安装到 sd 卡的模拟器后,您可以进入设置 --> 应用程序 --> 管理应用程序,选择要在 sd 卡上的应用程序,然后选择“移动到 SD 卡”按钮将不再灰显。

于 2011-08-19T22:05:08.417 回答
1

您可以检查 sd 卡是否真的已安装并且运行时是否有足够的空间可用

adb shell df

android-sdk/tools 目录中的命令,它会显示当前挂载了哪些分区、它们有多大以及有多少可用空间

于 2010-08-27T13:21:50.107 回答