Android Emulator sdcard推送错误:只读文件系统


Answers:



48

从一个外壳启动仿真器后,登录到另一个外壳并键入

adb shell

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

mount -o remount rw /sdcard

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

`adb push filename.mp3 /sdcard,`

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

希望这可以帮助 :)


即使重新安装不起作用,也请查看链接是否正确。那是/sdcard -> /mnt/sdcard。如果链接正确,请检查目录的权限/mnt/sdcard。如果没有必要的权限,请发出chmod命令来执行此操作。例如# chmod 0777 /mnt/sdcard应该工作。PS:您通常不需要执行权限。
Subin Sebastian 2012年

12
我和@Hissain有相同的问题。我能够使其代替以下命令正常工作:mount -o rw,remount rootfs /chmod 777 /mnt/sdcard。希望这可以帮助。
TragedyStruck

su:找不到...安装:权限被拒绝
MarekBernád'17

19

确保模拟器的AVD Manager实用程序中有两件事:

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

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

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


1
硬件标签在哪里?我没有在编辑Android虚拟设备(AVD)中看到它
tumbudu 13-4-26的

我看到仅在命令行上创建的avds的硬件标签。
tumbudu 2013年

10

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

参见问题78434

解决方法

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

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


2
感谢您的链接,这帮助了我。现在推荐的解决方案是找到您的AVD config.ini,并将hw.sdCard = no更改为hw.sdCard = yes。这对我有用。
Tim Malseed 2014年

是的,这是新的解决方案。不客气:)非常高兴它帮助你。是的,这是很好的解决方案。因为只要这个问题持续存在,任何人都无法使用所有这些linux代码:)
afra mehrparvar 2014年

惊人多少时间,我只是失去了,因为这个......非常感谢!
rectummelancolique 2014年

7

也许听起来很愚蠢,但是当我遇到相同的问题时,它对我有用:删除创建的avd,然后通过AVD Manager通过带有512MB sd卡的av卡再次创建。

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

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

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

希望有帮助!


@AnkitSrivastava您应该在终端中执行此命令(对于我来说是bash)。
Edu Zamora

无需重新创建AVD,只需重新启动它即可。
jab 2014年

是。创建其他类型的AVD的作品。谢谢。这也解决了另一个问题。现在我可以使用相机了。
makkasi

6

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

请按照以下步骤操作:

  1. 第一步:关闭正在运行的模拟器
  2. 步骤2:打开Android虚拟设备管理器(Eclipse菜单栏)
  3. 第三步:选择模拟器->编辑->然后设置SD卡大小

这在我的模拟器中效果很好!


4

确保在“创建AVD窗口”中为该特定仿真器指定的SD卡大小的值大于零


3

挂载-o重新挂载,rw / sdcard

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


3

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

转到您的adb文件夹,右键单击空白区域,然后选择“此处打开命令窗口”,或者如果您通过adb-installer安装了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中它应该向您显示传输时间而不是令人毛骨悚然的只读内容


和我不幸的是.. android studio版本8.10及更高版本,改变了一点工作室结构给出此错误...我用studio 8.09测试,没有这样的只读错误google应该解决这个问题
afra mehrparvar

2

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



0

确保您具有正确的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 


0

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


0

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


0

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

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

似乎可以通过rw访问该目录。

希望这可以帮助 :-)


0

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


0
  1. 在模拟器中给Sdcard任意大小
  2. 取消选中c:\ user ... android \ avd->属性中的只读选项
  3. 通过文件资源管理器推送文件
  4. 重新启动模拟器

肯定会的


0

最终与我一起在模拟器中运行了应用程序管理器并设置了存储权限。


0

以root用户身份在终端仿真器中尝试以下操作:

restorecon -v -R /data/media
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.