首页 文章

React-Native,Android,Genymotion:ADB服务器没有确认

提问于
浏览 1787
146

我在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

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

谢谢,保罗

10 回答

  • 308

    我正在使用genymotion,但仅保罗的解决方案并没有解决错误(对于Mac) .

    我不得不:

    Update Android SDK to the latest version (24.4.1) via the SDK manager

    在命令行中键入 android

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

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

    enter image description here

    Then update the $ANDROID_HOME to use the new 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 查看路径确认已添加

    Then in genymotion do what @Paul says above and point genymotion ADB to use the same sdk

    enter image description here

  • 43

    经过更多的研究,我意识到Genymotion默认使用它自己的adb .

    enter image description here

    我切换到我的主adb(反应原生使用的相同),它解决了这个问题 . 我想这是因为Genymotion的adb首先发布我收到了 Address already in use 错误消息 .

  • 9

    我有一个类似的问题 .

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

  • 4

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

    2.手动使用此命令执行(SDK PATH / adb,她将启动-n /包名称/ MainActivity) .

    C:\Users\AppData\Local\Android\Sdk/platform-tools/adb she ll am start -n com.example/com.example.ManiActivity

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

  • 2

    对我有用的步骤是:

    • $ adb kill-server

    • $ adb start-server

    • $ cd android

    • $ ./gradlew clean

    • $ cd ..

    • $ react-native run-android

  • 1

    System: Windows 10

    My issue: 设置Genymotion以指向自定义SDK没有任何影响 . 我还是收到了:

    无法在Android上启动项目:无法安装smartsocket侦听器:无法绑定到127.0.0.1:5037:通常只允许使用每个套接字地址(协议/网络地址/端口) . (10048)无法从ADB Server读取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
    

    让我看到世博会正在运行亚行版:

    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).
    

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

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

    希望这有助于/欢呼

  • 1

    也许你的adb版本不匹配

    校验:

    adb version
    

    然后:

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

    如果这两个不同,那么你在这里有一个错误,只需从sys中删除adb并将platform-tools中的那个复制到/ usr / bin /

  • 1

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

  • 1

    如果想保持系统清洁,你也可以 use Genymotion without Android Studio

    • 查找Genymotion的 adb 副本 . 在macOS上,这通常是 /Applications/Genymotion.app/Contents/MacOS/tools/ .

    • 将Genymotion工具目录添加到您的路径 - 执行/将 export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH 行添加到 ~/.bash_profile~/.bash_rc .

    • 确保您可以从终端运行adb .

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

  • 1

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

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

    adb版本

    Android Debug Bridge版本1.0.39

    • 检查sdk adb版本

    cd / root / Android / Sdk / platform-tools ./adb版本

    Android Debug Bridge版本1.0.32

    • 副本

    rm / usr / bin / adb

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

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

    然后使用此命令运行项目

    react-native run-android

相关问题