React-Native,Android,Gen​​ymotion:ADB服务器没有确认

Pau*_*aul 158 android genymotion react-native

我在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.
...
Run Code Online (Sandbox Code Playgroud)

但是,adb devices返回此信息:

List of devices attached
192.168.59.101:5555 device
Run Code Online (Sandbox Code Playgroud)

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

谢谢,保罗

Pau*_*aul 318

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

在此输入图像描述

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

  • 我试过这个解决方案,但我仍然遇到同样的错误.有替代解决方案吗? (7认同)
  • 感谢您发布此内容.我几乎心脏病发作,我昨晚更新了我的Android工作室2.1到预览3,genymotion将不再连接.这有助于我解决它. (4认同)

smj*_*393 45

我正在使用genymotion,但保罗的解决方案并没有解决错误(对于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

在此输入图像描述


Kyl*_*e s 10

系统: Windows 10

我的问题:将Genymotion设置为指向自定义SDK没有任何影响.我还是收到了:

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

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

where /r C:\ adb.exe
Run Code Online (Sandbox Code Playgroud)

这产生了结果:

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
Run Code Online (Sandbox Code Playgroud)

导航到每个目录并运行:

adb.exe version
Run Code Online (Sandbox Code Playgroud)

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

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android
Run Code Online (Sandbox Code Playgroud)

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

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
Run Code Online (Sandbox Code Playgroud)

作为测试,我从adb文件(adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll)中取出

c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
Run Code Online (Sandbox Code Playgroud)

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

c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
Run Code Online (Sandbox Code Playgroud)

进入同一个地方.我杀了adb:

adb kill-server
Run Code Online (Sandbox Code Playgroud)

由于我的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).
Run Code Online (Sandbox Code Playgroud)

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

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

希望这有助于/欢呼


Ald*_*RVV 7

也许您的adb版本不匹配

校验:

adb version 
Run Code Online (Sandbox Code Playgroud)

然后:

cd /Path/to/Android/Sdk/platform-tools && ./adb version
Run Code Online (Sandbox Code Playgroud)

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


Hoq*_*dul 5

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

  1. 检查 sys 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

然后使用此命令运行项目

反应本机运行 Android