确保您的设备中有足够的内部和外部可用空间。您可以使用以下命令确定可用空间:
$ adb shell df
Filesystem Size Used Free Blksize
/dev 192M 32K 192M 4096
/mnt/asec 192M 0K 192M 4096
/mnt/obb 192M 0K 192M 4096
/system 145M 124M 20M 4096
/data 196M 167M 29M 4096
/cache 95M 32M 62M 4096
/mnt/sdcard 3G 177M 3G 32768
在上面的输出中,/data
(默认安装位置)有 29MB 可用空间,而/mnt/sdcard
(SD 卡和外部安装位置)有 3GB 可用空间。
对于调试版本,您需要有大约 40MB 的可用空间(用于运行时包、平台包和应用程序)。发布版本明显更小,但无法使用评估版本创建发布版本。
如果您的模拟器没有 SD 卡,那么 Android 会产生错误是合理的。INSTALL_FAILED_MEDIA_UNAVAILABLE
(要将 SD 卡添加到您的模拟器,请启动android
应用程序,转到虚拟设备,选择一个设备,单击编辑,然后查看 SD 卡部分。)
对 Android 的粗略 grepping 表明DefaultContainerService.java是控制因素,特别是DefaultContainerService.recommendAppInstallLocation(),并且如果您的内部空间不足并且包指定auto
(如 Android 的 Mono 那样)并且 SD 卡不可用(status.equals(Environment.MEDIA_MOUNTED)
is false
),然后RECOMMEND_MEDIA_UNAVAILABLE
返回,翻译成INSTALL_FAILED_MEDIA_UNAVAILABLE
. 这对我来说仍然很奇怪(不会RECOMMEND_FAILED_INSUFFICIENT_STORAGE
更有意义吗?),但这似乎是正在发生的事情。