无法从Eclipse中删除虚拟设备,android

141

我有多个虚拟设备,其中一些无法删除。

错误消息是

安卓虚拟设备XXX当前正在模拟器中运行,无法删除

当我刚刚重启Ubuntu并启动Eclipse时出现此问题。


1
你是如何尝试删除的? - EnthuDeveloper
我可以轻松地在Eclipse中进行删除和添加操作。请告诉我您是如何尝试删除它的。 - EnthuDeveloper
如果模拟器正在运行,并且您尝试删除当前正在运行的模拟器,则无法删除。在删除虚拟设备之前,请关闭所有正在运行的模拟器。 - Karthi
2
仿真器未运行,就像我之前提到的一样,至少我没有运行它。我正在尝试从Eclipse AVD管理器中将其删除!它是4.0平台。我特意重新启动了Ubuntu以终止所有进程,因为我没有找到任何进程..似乎这只是Android 4.0平台的问题。 - whatswrong
目前Android Studio也存在同样的问题。 - Jono
6个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
290

在Linux/*nix和OSX操作系统中:

  1. 在你的$HOME目录下找到.android文件夹。
  2. 在.android文件夹中应该有一个avd文件夹。
  3. avd文件夹中可能会有一个或多个.ini文件以及对应的*.avd虚拟设备文件夹。
  4. 删除你要删除的*.ini文件和*.avd文件夹。
  5. 返回到Android sdk和AVD管理器。

40
在OSX系统中操作相同。在终端中进入~/.android/avd/目录,然后删除<avd name>.ini和<avd name>.avd文件。当你在Android虚拟设备窗口中刷新列表时,该虚拟设备将不再存在。 - JosephL
3
我猜这也适用于Windows。猜想安卓的SDK结构在任何地方都是一样的,只是路径不同罢了。 - nuala
谢谢JosephL。您能否解释一下,如果我们双击创建的.avd文件,它显示的路径只能通过终端导航。但是,如果我尝试通过finder->/Users/home/进行导航,我无法看到/.android/avd。为什么会这样? - May
如果您查看~/.android/avd/<avd-name>.avd目录,您会看到几个扩展名为.lock的文件。您可以删除这些文件,然后就能使用虚拟设备管理器应用程序了。 - BJV
如果你尝试返回到AVD管理器时出现“SDK位置未设置”之类的错误,请给工作区加载时间。我按照上述步骤操作后收到了这个消息,花了一些时间才发现我只是太急于回到AVD了。 - nPn

25

在/home/.android/[your device].avd文件夹中有时会剩下*.lock文件。这可能是由于意外的模拟器终止引起的。AVDM没有处理这个问题。手动删除设备文件夹或覆盖它可以解决这个问题。

在AVDM中尝试删除虚拟设备之前,请从相应的/home/.android/[your device].avd文件夹中删除所有*.lock文件。这样,您就可以在没有“设备XXX正在运行”的弹出窗口的情况下进行删除。


我尝试删除的原因是无法启动它,出现了一个非常不清楚的错误。所以对我来说,这是最好的答案。 - shalafi

19

从AVD管理器中提供了一个替代方案,该方案更加简单易行。

在AVD管理器中点击“新建”按钮。将名称设置为您无法关闭的设备的名称,选择任何设置,并勾选“覆盖具有相同名称的现有AVD”的复选框。

这将终止旧设备并用新设备进行覆盖。新设备未运行,因此可以删除。


6
我一直在寻找Java代码,这个错误意味着你有一个正在运行的AVD......你试过用top或htop(更好)kill它们吗?
    // check if the AVD is running
    if (avdInfo.isRunning()) {
        display.asyncExec(new Runnable() {
            public void run() {
                Shell shell = display.getActiveShell();
                MessageDialog.openError(shell,
                        "Delete Android Virtual Device",
                        String.format(
                                "The Android Virtual Device '%1$s' is currently running in an emulator and cannot be deleted.",
                                avdInfo.getName()));
            }
        });
        return;

使用htop,您可以使用F3搜索类似模拟器的内容 :) - Quentin DOMMERC
更有趣的代码片段将展示如何决定avdInfo.isRunning()。(它可能显示扫描avd文件夹以查找*.lock文件。) - Risadinha

2

从Finder(OSX)或Directory Explorer(Linux & Windows):

  1. 在$HOME目录中找到.android文件夹[隐藏文件夹]。 在MAC上显示/隐藏文件夹
  2. .android文件夹中应该有一个[Your Device].avd文件夹
  3. 在[Your Device].avd文件夹内查找*.lock文件并删除

从Android Studio:

  1. 打开AVD Manager
  2. 选择要删除的虚拟设备
  3. 单击末尾的向下箭头并选择[Show on Disk],它将打开目录
  4. 在[Your Device].avd文件夹内查找*.lock文件并删除

完成这些步骤后,您就可以从AVD Manager中删除了。


0

我也遇到了这个问题...在$home中找不到/看不到.android文件夹。我不知道它是否被隐藏了。如果您在AVD管理器中双击Android设备,它将向您显示“运行的avd”的路径,这正是每个人都说应该在的地方。由于我无法使用GUI删除这些文件,因此我使用CLI(终端)来执行此操作。您可以使用以下命令[cd]更改目录[rm -R]以删除文件。步骤如下:

  1. 从终端cli开始,它看起来像这样:

    nameOfYourMac:~ MacUser$

  2. 键入

    cd .android/avd

    (目录更改)

    nameOfYourMac:avd MacUser$

  3. 键入

    rm -R nameOfYourVirtualDevice.avd

非常简单。现在,您应该能够在Eclipse的AVD Manager中删除该设备。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,