71

我正在 Android 1.6 (Android SDK 2.1) 下开发。我在 Eclipse 中使用 avd 管理器创建了一个 avd。当我启动这个 avd 时,我发现 /sdcard 目录的权限是“d----------”。所以我无法将文件推送到 SD 卡。

有谁知道如何解决这个问题?

4

20 回答 20

131

我发现这行得通

$./adb shell
$su
mount -o rw,remount rootfs /
chmod 777 /mnt/sdcard
exit

来源: http: //www.coderanch.com/t/611842/Android/Mobile/Android-emulator-sdcard-writable

于 2013-10-07T09:48:12.883 回答
47

从一个 shell 启动模拟器后,登录到另一个 shell 并输入

adb shell

您应该看到# prompt显示,这是您的设备(模拟器)外壳。现在,在 adb shell 中键入以下命令。

mount -o remount rw /sdcard

现在,这将在获得许可的情况下重新挂载/sdcard,现在您可以使用主机 shell 中的以下命令rw(read-write)将文件推送到其中。/sdcard

`adb push filename.mp3 /sdcard,`

其中 filename.mp3 可以是您想要推送到 Android 模拟器中的任何文件。

希望这可以帮助 :)

于 2010-07-21T06:04:28.217 回答
18

在模拟器的 AVD 管理器实用程序中确保两件事:

  1. 提到了 SD 卡大小,例如 512。

  2. 在硬件标签中,按新建并从下拉菜单中选择“SD 卡支持”。

现在,启动模拟器。SD 卡现在也应支持写入。

于 2012-10-09T09:59:41.477 回答
10

Android Studio 0.8.9 及更高版本存在创建 AVD 的错误。

请参阅问题 78434

解决方法

  • 转到 .android 文件夹中的 ADV 文件夹并找到您的 AVD config.ini
  • 使用可以处理 unix 换行符的文本编辑器打开它。(记事本会将这些行一起运行,因为它们没有 CR-LF。)
  • 更改hw.sdCard=nohw.sdCard=yes

这应该适用于新版本中的每个人

于 2014-10-31T14:07:21.360 回答
7

我认为这里的问题是您忘记设置 SD 卡大小

请按照以下步骤使其工作:

  1. step1:关闭正在运行的模拟器
  2. step2:打开Android Virtual Device Manager(eclipse菜单栏)
  3. 第三步:选择你的模拟器 -> 编辑 -> 然后设置 SD 卡大小

这在我的模拟器中运行良好!

于 2013-07-28T19:03:46.277 回答
7

也许这听起来很愚蠢,但当我遇到同样的问题时它对我有用:删除创建的 avd 并通过 AVD Manager 使用例如 512MB 的 sd 卡再次创建一个。

检查两者是否具有正确的权限,如果没有,请尝试使用 chmod 更改它们。

如果一切仍然失败,请重复该过程,但通过终端手动创建 avd 和 sd 卡:

android create avd -n my_avd -t 7
mksdcard -l e 512M mysdcard.img
emulator -avd my_avd -sdcard mysdcard.img

希望有帮助!

于 2010-03-14T10:02:29.243 回答
4

确保您在该特定模拟器的创建 AVD 窗口中为SD 卡大小提供了一个大于零的值。

于 2011-07-10T12:56:04.080 回答
3

我尝试了@user2002993 很大的帮助,但它需要在一个地方进行一点编辑,所以我进行了编辑,这里在 Android Studio、模拟器 android 5 上对我有用。

转到您的 adb 文件夹,右键单击空白区域并选择“在此处打开命令窗口”,或者如果您通过 adb-installer open 安装了 adb,cmd然后键入以下命令:

adb devices

它应该显示您的模拟器编号和详细信息。然后在这里执行命令:

adb shell

现在它应该向您显示提示 #

su

mount -o rw,remount rootfs

chmod 777 /mnt/sdcard

exit

exit

是的,需要双重退出,现在你的 adb shell 提示消失了。将文件放入您的 adb 文件夹并发出此命令,看看它是否已修复。

adb push "your file name like : 1.jpg" /sdcard/

或者

adb push "your file name like : 1.jpg" /storage/sdcard/

现在在 cmd 它应该向您显示传输时间而不是令人毛骨悚然的只读内容

于 2014-10-29T11:04:12.323 回答
3

mount -o 重新挂载,rw /sdcard

这是使用模拟器重新安装 SD 卡的正确方法。

于 2011-10-20T23:19:54.110 回答
2

我为模拟器将 sdcard 的虚拟内存增加到 512 MB,这就足够了

于 2013-07-21T20:25:02.433 回答
1

我猜,您在创建 avd 时没有插入内存大小。您可以通过编辑 avd 来做到这一点。截屏

于 2014-01-30T09:36:19.670 回答
0

替代方法:卸载驱动器(从设置/存储)并重新安装 sdcard 也可以解决问题。(通过将文件从内部存储移动到 sdcard 来验证)无论如何,这个简单的方法这次救了我的屁股 :)

于 2015-03-29T11:00:40.530 回答
0

在 adb 版本 1.0.32 和 Eclipse Luna (v 4.4.1) 中。

我在 avd /mnt/media_rw/sdcard 中找到了一个目录,您可以使用 adb 命令写入该目录。adb push {源} /mnt/media_rw/sdcard

似乎有对该目录的 rw 访问权限。

希望这可以帮助 :-)

于 2014-12-20T05:09:39.153 回答
0

确保您拥有正确的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
于 2012-02-13T19:52:15.677 回答
0

我在 Android L 开发者预览版中遇到了这个问题,并且,至少对于这个版本,我通过创建一个大小为 2 平方大小(例如 128M、256M 等)的 sdcard 解决了这个问题

于 2014-10-24T12:34:45.680 回答
0
  1. 在模拟器中给 SDcard 任意大小
  2. 取消选中 c:\user...android\avd -> properties 中的只读选项
  3. 通过文件资源管理器推送文件
  4. 重启模拟器

它肯定会起作用

于 2015-04-06T12:41:18.213 回答
0

Windows 使用反斜杠,Linux 使用正斜杠。

于 2013-05-18T14:50:14.107 回答
0

有时这可能是一个非常简单的原因,在 eclipse 中转到您的列表并检查您是否设置了 SDCard 大小

于 2013-12-04T21:44:30.653 回答
0

以 root 身份在终端模拟器中尝试此操作:

restorecon -v -R /data/media
于 2016-11-06T12:26:01.990 回答
0

With me in the end helped In the emulator to run applications manager and setting permissions for storage.

于 2016-03-03T22:01:15.143 回答