系统: 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
并将它们放入备份文件夹中。然后,我将位于
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
到同一位置。我杀了亚行:
adb kill-server
由于我的Genymotion设备已经在运行,因此会自动重启adb服务器。我点击了Expo XDE内的“重新启动”按钮,它立即开始工作。这是我在1:13:04 AM按下重新启动按钮的日志:
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资源位置)。
聚苯乙烯我一直都在与这个问题相关的stackoverflow帖子中。大家知道我的任务管理器显示了adb.exe运行的三个实例。如果您杀死其中任何一个,它们就会回来。
希望这可以帮助/欢呼