【问题标题】:React-Native, Android, Genymotion: ADB server didn't ACKReact-Native、Android、Genymotion:ADB 服务器没有 ACK
【发布时间】:2016-06-27 19:51:33
【问题描述】:

我正在 Mac 上使用 React-Native、Android 和 Genymotion。当我运行 react-native run-android 时,我在启动操作结束时得到以下几行:

...
04:54:40 E/adb: error: could not install *smartsocket* listener: Address already in use
04:54:40 E/adb: ADB server didn't ACK
04:54:40 E/ddms: '/Users/paulbrie/Library/Android/sdk/platform-tools/adb,start-server' failed -- run manually if necessary
04:54:40 E/adb: * failed to start daemon *
04:54:40 E/adb: error: cannot connect to daemon
:app:installDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: Timeout getting device list.
...

但是,adb devices 会返回:

List of devices attached
192.168.59.101:5555 device

到目前为止,我还没有找到在模拟器上运行我的应用程序的解决方案。有没有人遇到过同样的问题?

谢谢, 保罗

【问题讨论】:

  • 无论 Genymotion 运行如何,都会发生此错误。

标签: android react-native genymotion


【解决方案1】:

经过更多研究,我发现 Genymotion 默认使用自己的 adb。

我切换到我的主 adb(与 react-native 相同),它解决了这个问题。我猜是因为 Genymotion 的 adb 是首先启动的,所以我收到了 Address already in use 错误消息。

【讨论】:

  • 感谢您发布此信息。我差点心脏病发作,昨晚我将我的 android studios 2.1 更新到 Preview 3,genymotion 将不再连接。这帮助我解决了这个问题。
  • 我尝试了这个解决方案,但我仍然遇到同样的错误。是否有替代解决方案?
  • @user2254679 你也检查过这个线程吗? stackoverflow.com/questions/5703550/…
  • @Paul 您能否详细说明您提供的路径? react-native 使用的 adb 在哪里?我正在尝试提供我的 Android SDK 的路径,但它不起作用。最好用英文。
  • @KPal,路径特定于您自己的设置。就我而言,它是当时 Mac 中 Android 安装的标准路径:/Users/$yourName/Library/Android/sdk。如果您安装了 Android,您应该根据 Android 版本/您的平台搜索您的路径。
【解决方案2】:

我正在使用 genymotion,但仅 Paul 的解决方案并不能修复错误(对于 Mac)。

我不得不:

通过 SDK 管理器将 Android SDK 更新到最新版本 (24.4.1)

在命令行中输入android

在 SDK 管理器中找到最新的 SDK 工具并安装。

安装后,SDK 路径应更新新的 SDK 位置,如下所示。

然后更新 $ANDROID_HOME 以使用新的 SDK

export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

通过echo $PATH查看您的路径来确认它已被添加

然后在 genymotion 中执行@Paul 上面所说的操作并指出 genymotion ADB 使用相同的 sdk

【讨论】:

  • 它适用于 ubuntu 16.04。出于某种原因,我认为类路径上不需要$ANDROID_HOME/tools 目录。您需要添加才能连接到 adb。
【解决方案3】:

系统: Windows 10

我的问题:将 Genymotion 设置为指向自定义 SDK 没有任何影响。我仍然收到:

无法在 Android 上启动项目:无法安装 smartsocket 侦听器:无法绑定到 127.0.0.1:5037:每个套接字只能使用一次 地址(协议/网络地址/端口)通常是允许的。 (10048) 无法从 ADB 服务器读取 ok * 无法启动守护程序 * 错误: 无法连接到守护进程

我发现在整个系统中使用的 ADB 版本存在差异。这是我用来查找它们的命令:

where /r C:\ adb.exe

这产生了结果:

C:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
C:\Program Files\Genymobile\Genymotion\tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb backup\adb.exe

导航到每个目录并运行:

adb.exe version

让我看到 Expo 正在运行 ADB 版本:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

虽然使用自定义 SDK 的 Genymotion 有版本 (c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe):

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

作为测试,我从

获取了 adb 文件(adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll)
c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe

并将它们放入备份文件夹中。然后我移动了位于

的adb文件
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe

到同一个位置。我杀死了 adb:

adb kill-server

由于我的 Genymotion 设备已经运行,导致 adb 服务器自动重启。我点击 Expo XDE 内的“重新启动”按钮,它立即开始工作。这是我在凌晨 1:13:04 按下重新启动按钮的日志:

12:45:53 AM
could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: Only one usage of each socket address (protocol/network address/port) is normally permitted. (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
1:13:04 AM
Restarting project and clearing packager cache (Hold shift while clicking restart to avoid clearing cache).
1:13:11 AM
Starting React Native packager...
1:13:17 AM
Scanning 543 folders for symlinks in C:\Users\kyle\git\betalog\node_modules (49ms)
1:13:17 AM
1:13:19 AM
Couldn't adb reverse: closed
1:13:20 AM
Project opened! You can now use the "Share" or "Device" buttons to view your project.
1:13:26 AM
Couldn't adb reverse: closed
1:13:26 AM
Downloading latest version of Expo
1:13:28 AM
Installing Expo on device
1:13:33 AM
Opening on Android device
1:13:56 AM
Building JavaScript bundle: finished in 59643ms.
1:14:01 AM
Dependency graph loaded.
1:14:03 AM
Your JavaScript transform cache is empty, rebuilding (this may take a minute).

结论: Genymotion 和 Expo 可能需要使用相同版本的 adb,这样 Expo 才能与模拟设备正常通信。将 Genymotion 指向您的 android SDK 位置并确保 Expo XDE 具有相同的版本将允许设备之间的正确通信。我将 Expo XDE 版本移至 SDK 位置,但您也许可以采用其他方式(获取 sdk ADB 文件并将它们放在 Expo XDE 资源位置)。

P.S. 我已经浏览过与此问题相关的 stackoverflow 帖子。让你们知道我的任务管理器显示了三个正在运行的 adb.exe 实例。如果你杀了他们中的任何一个,他们就会回来。

希望这有助于/干杯

【讨论】:

    【解决方案4】:

    可能你的 adb 版本不匹配

    检查:

    adb version 
    

    然后:

    cd /Path/to/Android/Sdk/platform-tools && ./adb version
    

    如果这两个不同,则此处有错误,只需从 sys 中删除 adb 并将平台工具中的那个复制到 /usr/bin/

    【讨论】:

      【解决方案5】:

      您系统上的 adb 版本与 android sdk platform-tools 上的 adb 版本不同。 以下建议适用于我的 Linux 操作系统

      1. 检查 sys adb 版本运行以下命令

      adb 版本

      Android 调试桥版本 1.0.39

      1. 检查 sdk adb 版本

      cd /root/Android/Sdk/platform-tools

      ./adb 版本

      Android 调试桥版本 1.0.32

      1. 复制

      rm /usr/bin/adb

      [注意:上述命令删除现有的 adb 然后从 sdk/platform-tools 目录复制 adb]

      sudo cp /root/Android/Sdk/platform-tools/adb /usr/bin/adb

      然后使用这个命令运行项目

      react-native run-android

      【讨论】:

      • 这是一个很好的 Linux 解决方案,无论是否安装 android studio 都可以使用
      【解决方案6】:

      如果想保持系统清洁,您也可以在没有 Android Studio 的情况下使用 Genymotion

      1. 查找 Genymotion 的 adb 副本。在 macOS 上,这通常是 /Applications/Genymotion.app/Contents/MacOS/tools/
      2. 将 Genymotion 工具目录添加到您的路径 - 执行/添加行 export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH 到您的 ~/.bash_profile~/.bash_rc
      3. 确保您可以从终端运行 adb。

      (来自https://docs.expo.io/versions/latest/workflow/genymotion

      【讨论】:

        【解决方案7】:

        当我尝试从 expo UI 运行时,我遇到了同样的事情。 如答案中所述,做了同样的事情,但应用程序没有运行。 当尝试从命令行(在项目文件夹中)运行exp android 时,应用程序运行成功,并且下次从 Expo UI 运行成功。

        【讨论】:

          【解决方案8】:

          我也有类似的问题。

          首先,我卸载了该应用程序。 然后,我将 GenyMotion 指向 Android Studio 提供的 android sdk 接下来,我在终端中运行“adb kill-server”。 最后,我重新运行“react-native run-android”,构建成功。

          【讨论】:

            【解决方案9】:

            对我有用的步骤是:

            • $ adb kill-server

            • $ adb start-server

            • $ cd android

            • $ ./gradlew clean

            • $ cd ..

            • $ react-native run-android

            【讨论】:

              【解决方案10】:

              对于 Ubuntu

              对我有用!!

              1. 检查系统亚行版本

              adb 版本

              Android 调试桥版本 1.0.39

              2 查看sdk adb版本

              cd /home/user_name/Android/sdk/platform-tools

              ./adb 版本

              Android 调试桥版本 1.0.32

              1. 复制

              sudo cp /home/user_name/Android/sdk/platform-tools/adb /usr/local/bin

              就是这样!它现在可以工作了。

              【讨论】:

                【解决方案11】:

                1.在genymotion中使用自定义sdk路径。(假设这一个不起作用意味着,尝试执行第二个)

                2.手动使用该命令执行(SDK PATH/adb she ll am start -n/Package name/MainActivity)。

                C:\Users\AppData\Local\Android\Sdk/platform-tools/adb she 我开始 -n com.example/com.example.ManiActivity

                并尝试使用 react-native run-android 运行应用程序。

                【讨论】:

                  【解决方案12】:

                  当我尝试在 Genymotion 中运行我的 react-native 项目时发生了同样的问题

                  适用于 Linux ubuntu 20.04 转至/home/mycomputer/Android/Sdk/platorm-tools

                  运行$./adb version

                  只需复制/usr/bin中的adb路径

                  $ sudo cp /home/raik/Android/Sdk/platform-tools/adb /usr/bin

                  然后我可以在 genymotion 中运行我的项目。

                  注意:在某些Linux系统中可能会复制到/usr/local/bin这个路径下`

                  【讨论】:

                    【解决方案13】:

                    如果有人在使用 Android Studio 模拟器的 Windows 中遇到这个问题,那么只需在 powershell 或 cmd 中运行以下命令:

                    taskkill /F /IM adb.exe
                    

                    它应该杀死所有 adb 进程实例,然后您可以通过 Expo CLI 重新加载应用程序或在 Android 上再次启动应用程序。

                    【讨论】:

                      猜你喜欢
                      • 2017-08-19
                      • 1970-01-01
                      • 2022-06-12
                      • 2020-12-04
                      • 1970-01-01
                      • 2020-07-19
                      • 1970-01-01
                      • 2017-04-08
                      • 2021-01-13
                      相关资源
                      最近更新 更多