【问题标题】:Android emulator sdcard suddenly read-only(failing to mount?)Android模拟器SD卡突然只读(无法挂载?)
【发布时间】:2014-05-26 10:23:30
【问题描述】:

我已经使用带有已安装 sdcard 的 android 模拟器几个星期了,没有任何问题。今天我启动我的应用程序,当我的活动尝试访问 /mnt/sdcard 时,它崩溃并出现 NullPointerException。我检查了 DDMS 文件资源管理器, /mnt/sdcard 似乎是空的。我尝试将文件推送到它上面,但它是只读的,权限是 d----------。 logcat输出的开头有这两行:

D/Vold    (   29): Volume sdcard state changing -1 (Initializing) -> 0 (No-Media)
D/Vold    (   29): Volume sdcard state changing 0 (No-Media) -> 1 (Idle-Unmounted)

所以我认为这意味着 sdcard.img 由于某种原因突然无法挂载。任何想法为什么会这样?

【问题讨论】:

  • 确保您已在清单文件中设置权限

标签: android


【解决方案1】:

为模拟器打开一个shell

adb shell

然后键入以下命令:

mount -o remount,rw /sdcard

现在可以用了吗?

【讨论】:

  • 我很想知道为什么会发生这个愚蠢的错误。刚才在2.3.3模拟器上看到了
  • 这个错误特别严重,因为您创建的每个新模拟器仍然包含一个只读 /sdcard
【解决方案2】:

您可能会忘记为您的 SD 卡分配内存。转到 Android 虚拟设备管理器并编辑您的模拟器设置,将您的 sd 卡大小设置为 512mb。它对我有用。

【讨论】:

    【解决方案3】:

    我在跟踪两天也遇到了这个问题。

    1. 我忘记为我的 sd 卡分配内存。转到 Android 虚拟设备管理器并编辑模拟器设置,将 sd 卡大小设置为 128mb。

    2. 检查 AndroidMenifest.xml 以设置权限

    3. 在应用程序中使用以下代码测试文件操作

      std::FILE* file = std::fopen("/sdcard/hello.txt","w+");
      if (file != NULL)    
      {
          std::fputs("HELLO WORLD!\n", file);
          std::fflush(file);
          std::fclose(file);
      }
      
    4. 在模拟器中运行可执行应用程序, 然后使用“adb shell ls /sdcard”检查文件“hello.txt”是否已经创建。

    【讨论】:

      【解决方案4】:

      我在命令mount -o remount,rw /sdcard 上输出了消息“无效参数”。所以 我移动了文件夹“android-sdk”,这样路径名中就没有空格了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        • 2012-10-27
        • 1970-01-01
        • 2011-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多