【问题标题】:Android emulator-5554 offlineAndroid emulator-5554 离线
【发布时间】:2011-03-10 07:44:41
【问题描述】:

我遇到了 emulator-5554 的问题,它一直告诉我它处于离线状态。

当我从命令行执行adb devices 时,它会说

emulator-5554 offline

即使在重新启动后,我尝试了该命令,它仍然显示它处于脱机状态。

问题是当我尝试在命令提示符下使用abd install <path> 将.apk 文件安装到模拟器时,它告诉我它处于脱机状态,如果我创建另一个设备并运行该设备,然后尝试安装.apk 文件。 apk 文件,它说我连接的设备太多。换句话说,我无法安装我的 .apk 文件。

我到底怎么才能摆脱那个该死的 emulator-5554?我听说如果您重新启动,它应该清除所有设备,但这似乎不起作用。就像我的计算机启动时它正在初始化一样。有人遇到过这个问题吗?

谢谢

【问题讨论】:

  • 为了确定问题是否出在模拟器上,试试这个: 1. 打开一个模拟器。 2.打开另一个模拟器。 3. adb devices 获取模拟器名称。 4.尝试通过执行安装APK:adb -s NAME_OF_DEVICE install file.apk 5.告诉我们会发生什么。
  • 我回家后(现在正在工作)会尝试一下,我不知道您可以指定要安装的设备。那应该真的很有帮助。我会在几个小时内更新。感谢您的回复!
  • 再次感谢您的评论。我能够按照您所说的在模拟器上安装apk。断开连接的设备仍保留在我的设备列表中,但我想做的只是安装那个 .apk。再次感谢,它成功了!
  • 我认为这个问题与:stackoverflow.com/questions/6013624/… 尝试看看这个线程。
  • 这不能回答您的问题,但可能会解决您的问题 - adb -d 指定 USB 设备而不是模拟器,adb -e 模拟器而不是 USB 设备,以及 adb -s NAME 我认为可以使用具体指定您想要的设备,但我不清楚最后一个是否总是按照您的想法工作。

标签: android android-emulator


【解决方案1】:

如果您擦除数据,您的模拟器仍然无法连接到互联网。

请检查您的 DNS 网络并添加 DNS 8.8.8.8

【讨论】:

    【解决方案2】:

    如果您使用的是 Linux 或 Mac,并且假设离线设备是“emulator-5554”,您可以运行以下命令:

    netstat -tulpn|grep 5554
    

    产生以下输出:

    tcp        0      0 127.0.0.1:5554          0.0.0.0:*               LISTEN      4848/emulator64-x86
    tcp        0      0 127.0.0.1:5555          0.0.0.0:*               LISTEN      4848/emulator64-x86
    

    这告诉我进程 id 4848(您的可能会不同)仍在侦听端口 5554。您现在可以使用以下命令终止该进程:

    sudo kill -9 4848
    

    幽灵离线设备已不复存在!

    在 macOS Big Sur 及更高版本上,使用

    sudo lsof -i -P | grep LISTEN | grep 5554
    

    找出过程。

    【讨论】:

      【解决方案3】:

      我也有同样的问题。我已经尝试了这里描述的所有解决方案,但它们对我没有帮助。然后我删除了 Android 虚拟设备管理器 中的所有模拟器并创建了新模拟器。问题出在 Android 虚拟设备管理器CPU/ABI 系统映像配置中。我的带有系统映像 x86 的 Windows10 机器模拟器始终处于脱机状态,其中带有系统映像 x86_64 的模拟器按预期工作正常。请注意这一点

      【讨论】:

      • 在我的情况下,x86 系统映像 windows 10,我只需要删除所有模拟器然后重新创建它们
      • 非常感谢,我花了很多时间试图让它工作,这是我的问题
      • 此处相同,但在 Windows 7 上。
      【解决方案4】:

      在我的情况下,原因是 VMware 的 NAT 连接设置中的端口转发。

      【讨论】:

        【解决方案5】:

        步骤 01: 从 AVD 管理器中删除当前模拟器 步骤 02: 添加新的模拟器。选择设备 => 选择系统映像,在此步骤中转到 x86 图像选项卡 并选择一个具有 google APIs 的目标。 步骤 03: 完成所有步骤。你很高兴?️

        【讨论】:

          【解决方案6】:

          在这种情况下,您可以执行以下所有操作,以确保您的模拟器重新开始工作:

          1. 转到 cmd 并输入 adb kill-server
          2. 进入任务管理器,在进程中找到adb。如果找到一个,右键单击它并单击结束进程树。
          3. 在eclipse中,进入Window>Android Virtual Device Manager,点击要启动的AVD,点击开始,取消选中“Launch From Snapshot”,然后点击启动。

          就是这样!这需要一段时间,它应该可以解决您的问题。

          【讨论】:

          • 这对我也有用(在任何情况下,杀死 ADB 都不能解决我的问题)。
          • 我一杀掉那个进程树,adb running devices 列表就被清除了:) 它起作用了。
          • 在 Android Studio 中,将虚拟设备启动选项从快速启动更改为冷启动对我有用。
          • 当我从 Visual Studio 2019 执行 Android 设备管理器时,在哪里可以找到“从快照启动”设置?
          • 只有完全卸载模拟器和 XAML 才能在我的情况下工作。 Google 懒得检查每个版本
          【解决方案7】:

          emulator-5554 unauthorized for adb devices。在 API 29 模拟器上,我运行 adb devices 命令并收到 emulator-5554 unauthorized 消息。然后我从Google APIs 图像(在我的情况下为Q,x86)而不是Google Play 创建了一个新的avd 设备。

          【讨论】:

            【解决方案8】:

            打开你的模拟器,

            设置-->关于模拟设备-->反复点击Build number-->打开开发者选项-->打开USB调试

            【讨论】:

            • 问题是模拟器只是黑屏。只有当您可以访问设置时,您才能执行此操作。
            【解决方案9】:

            我的虚拟设备也遇到了同样的问题。问题是由于集成了 Play 商店的虚拟设备的 Oreo 映像造成的。为了解决这个问题,我安装了一个没有集成 Play 商店的新设备,一切都很好。

            希望对你有帮助,再见

            【讨论】:

            • 多么奇怪的情况,但它也为我解决了问题。
            【解决方案10】:

            我终于解决了这个问题, 我必须从 Emulator 中的 Settings 转到 Developer options, 然后向下滚动一点,打开USB调试。我的设备立即被在线识别,我不再面临这个问题。我尝试重新启动 android studio 和模拟器,杀死 adb 进程,但这些都不起作用。

            【讨论】:

            • 你是英雄!
            • 嗨@Shamsul,您能描述一下如何从模拟器中的设置访问开发人员选项吗?我想您指的是 Android Studio 中的 AVD Manager。我在这个线程中描述了同样的问题,并尝试了所有建议的东西,除了你的建议。我在 AVD 管理器中没有看到任何模拟器的开发者选项。
            • 嗨,Eddie,打开开发者选项的通常过程对于模拟器和真实设备是相同的。在软件信息中找到版本号,反复点击,大概7-10次后,你会看到开发者选项已经开启。
            • 我通过在Developer options 中切换USB debugging 解决了这个问题。我不确定为什么会突然发生这种情况,但这解决了问题。
            【解决方案11】:

            就我而言,我从“立即冷启动”开始,然后单击消息以允许连接。

            【讨论】:

              【解决方案12】:

              在我的情况下,模拟器使用 Oreo 及更低版本,但不使用 Pie,我尝试的所有操作似乎都没有效果。最终奏效的是将模拟器更新到最新版本(版本 28)。

              【讨论】:

              • 我也是……很烦人
              【解决方案13】:

              来自操作下拉列表中的 AVD 管理器列表: 立即冷启动

              重新启动它,上面没有任何痛苦。

              【讨论】:

                【解决方案14】:

                从 AVD 管理器中尝试下拉菜单中的“立即冷启动”选项。它对我有用!

                【讨论】:

                • 这可能是人们在使用这些过于复杂的其他解决方案之前应该尝试的第一件事......
                • 谢谢!我挣扎了将近 2 个小时。
                【解决方案15】:

                在 MAC 中,您可以使用 Activity Monitor 实用程序,因为与 Linux 不同,我们不能在 MAC 中使用 netstat -tulpn 命令。搜索模拟器的运行实例,通常是 qemu-system-i386。杀死该实例,您将看不到任何幽灵模拟器正在运行。

                获取活动监视器实用程序的最简单方法是使用聚光灯搜索。只需点击 cmd-space 并输入 Activity Monitor

                【讨论】:

                  【解决方案16】:

                  在您的模拟器中启用 USB 调试

                  1. 设置>关于手机>版本号>点击7次成为开发者;
                  2. 设置 > 开发者选项 > USB 调试。

                  这就是享受

                  【讨论】:

                  • 重新启用 USB 调试对我有帮助(关闭和打开)
                  【解决方案17】:

                  以上所有答案都没有帮助,然后我删除并重新创建了模拟器一切正常

                  【讨论】:

                    【解决方案18】:

                    确保您的启用 ADB 集成被标记; 转到工具>Android>启用 ADB 集成。

                    如果未选中,请选中此选项并关闭您的虚拟设备并重新打开它。这对我有用.. 祝你好运!

                    【讨论】:

                      【解决方案19】:

                      1 .只需“擦除数据”即可解决此问题。

                      2 。如果它不起作用,请转到模拟设备并启用开发者选项>启用usb调试

                      【讨论】:

                      • 从模拟器中卸载应用程序对我有用。但这和擦除数据是一样的想法
                      • 这有助于在“擦除数据”下方与“立即冷启动”结合使用。
                      • tks 这么多,你救了我的一天
                      • 启用usb调试和冷启动就足够了。
                      • 这应该是答案。
                      【解决方案20】:

                      在 linux 或 mac 上,被阻塞的端口将 emulator-id + 1 所以 5555 所以: sudo lsof -i :5555 将向您显示占用端口的进程的 pid(应该是第二列),以便杀死它: sudo lsof -i :5555 | awk '{print $2}' | xargs kill

                      然后 adb (fake) 设备将不再显示在列表中

                      【讨论】:

                        【解决方案21】:

                        我将在此处添加另一个可能的解决方案,这在我的案例中是有效的。

                        我发现有一个名为 SpiceWorksEventProcessor 的进程正在运行,它占用了 5555 端口,并且显然被 adb 作为模拟器读取。杀死那个进程是最终为我移除了那个顽固的模拟器设备的原因。

                        我不确定这是什么东西,但如果你有它,它可能是你离线模拟器的原因。

                        干杯

                        【讨论】:

                          【解决方案22】:

                          我尝试了所有方法,但只有这个适用于我的情况: 使用 SDK manager,重新安装系统镜像。 Android Studio, 点击配置, SDK Manager, Launch Standalone SDK Manager, 检查所有“Google APIs Intel x86* System Image”、“Intel x86 Atom*System Image”并安装。然后重新启动 Android Studio。

                          您可能需要使用 AVD Manager 重新配置和擦除虚拟设备,确保选择 x86 版本。

                          【讨论】:

                          • 对我来说,是 x86_64 版本的工作,其他的都没有工作
                          【解决方案23】:

                          只需从 AVD 管理器中擦除用户数据,然后输入 adb kill-server 和 adb devices。 擦除数据还可以在系统中节省大量内存空间。

                          【讨论】:

                            【解决方案24】:

                            此解决方案适用于 Windows。

                            (对于 Mac/Linux,请参阅 @Chris Knight's solution

                            1. 启动 Windows Powershell:

                              开始 -> 输入 'powershell' -> 按 ENTER

                            2. 运行以下命令:adb devices


                            PS C:\Users\CJBS>adb devices
                            List of devices attached
                            emulator-5656   host
                            emulator-5652   host
                            12b80FF443      device
                            

                            在这种情况下,12b80FF443 是我的物理设备,而 emulator-* 条目是垃圾。

                            1. Per @Brigham,“Android 检测模拟器的方式是 从端口 5555 开始扫描端口。”。端口号在模拟器名称之后(在本例中为 5656 和 5652)。要检查的端口号是模拟器端口号加 1。所以在这种情况下:-

                              5656 + 1 = 5657

                              5652 + 1 = 5653

                              那么让我们看看哪个程序正在使用这些端口。在这种情况下,要检查的端口都以“565”开头。所以我会搜索以565开头的正在使用的端口。执行:netstat -a -n -o | Select-String ":565"


                            PS C:\Users\CJBS> netstat -a -n -o |  Select-String ":565"
                            
                              TCP    127.0.0.1:5653         127.0.0.1:5653         ESTABLISHED     5944
                              TCP    127.0.0.1:5657         127.0.0.1:5657         ESTABLISHED     5944
                            
                            1. 此输出中的最后一个字段是 PID(进程 ID) - 在本例中,这两个端口的 PID 为 5944。那么让我们看看这个进程ID是什么。执行:tasklist /v | Select-String 5944。将 5944 替换为上一条命令的输出:

                            PS C:\Users\CJBS> tasklist /v | Select-String 5944
                            
                            adb.exe                       5944 Console                    1      6,800 K Running         MyPCName\CJBS          0:06:03 ADB Power Notification Window
                            

                            真是一个惊喜。是亚行。正如其他答案所指出的,它也可能是其他程序。

                            1. 现在,只需终止此进程 ID。执行 kill 5944,将 5944 替换为上一条命令中的 PID。

                            PS C:\Users\CJBS> kill 5944
                            
                            1. 要确认虚假模拟器已消失,请重新运行以下命令:adb devices

                            PS C:\Users\CJBS>adb devices
                            List of devices attached
                            * daemon not running. starting it now on port 5037 *
                            * daemon started successfully *
                            12b80FF443      device
                            

                            ADB 重新启动(因为它之前被杀死),并且它不再检测到假模拟器。

                            【讨论】:

                            • 谢谢,在我的例子中,VSCode 已经打开了一个 5555 端口并创建了一个 ghost 5554 模拟器。操作时关闭 VSCode。
                            【解决方案25】:

                            在我的情况下,我没有选中“GPU Host”并且它的工作:)

                            【讨论】:

                              【解决方案26】:

                              随便写

                              adb -e reboot
                              

                              并且对 adb 感到满意))

                              【讨论】:

                              • 这告诉 ADB 重启模拟器。如果它被标记为离线,它将无法工作。
                              • 如果您之前执行过rm -Rf ~/.android 来清理离线设备,则可以使用。最好的命令,只有一个可以解决我的问题。没有kill-serverstart-server 成功了。
                              【解决方案27】:

                              如果模拟器已经打开或正在执行它会告诉你离线。您可以在命令行 (Ubuntu) 上仔细检查并执行:

                               adb devices
                              

                              你必须看到你的模拟器离线,你必须关闭模拟器的运行实例(因为端口会显示为繁忙),然后你才能运行你的应用程序。希望这对某人有所帮助。

                              【讨论】:

                                【解决方案28】:

                                这是因为您的机器上安装了另一个虚拟设备。可能是 Bluestacks,因为我也遇到了类似的问题。我卸载了 Bluestacks 然后检查了 adb devices 那时它运行良好。

                                【讨论】:

                                  【解决方案29】:

                                  在我的情况下,原因是我恢复了一个带有 android-x86 的虚拟机。使用 Android-x86 重新启动 VM 并重新启动 adb 服务器解决了该问题。

                                  【讨论】:

                                    【解决方案30】:

                                    只需删除并再次创建 gear avd。它会工作。

                                    【讨论】:

                                      猜你喜欢
                                      • 2021-04-28
                                      • 2014-03-08
                                      • 2019-08-08
                                      • 1970-01-01
                                      • 2014-01-26
                                      • 1970-01-01
                                      • 2014-02-17
                                      • 2017-08-01
                                      相关资源
                                      最近更新 更多