React-Native,Android,Genymotion:ADB 服务器未确认
React-Native, Android, Genymotion: ADB server didn't ACK
我正在使用 React-Native、Android 和 Genymotion Mac。当我 运行 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
returns 这个:
List of devices attached
192.168.59.101:5555 device
到目前为止,我还没有找到 运行 我的应用程序在模拟器上的解决方案。有人遇到过同样的问题吗?
谢谢,
保罗
经过更多研究,我发现 Genymotion 默认使用它自己的 adb。
我切换到我的主 adb(与 react-native 使用的相同),它解决了问题。我猜是因为 Genymotion 的 adb 首先启动,所以我收到了 Address already in use
错误消息。
我正在使用 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
系统: Windows 10
我的问题: 将 Genymotion 设置为指向自定义 SDK 没有任何影响。我仍然收到:
Couldn't start project on Android: 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
我发现整个系统中使用的 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 中的 "Restart" 按钮,它立即开始工作。这是我在 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 资源位置)。
P.S. 我已经浏览了所有与此问题相关的 Whosebug 帖子。只是为了让你们知道我的任务管理器显示了 adb.exe 运行 的三个实例。如果你杀了他们中的任何一个,他们就会回来。
希望这对您有所帮助/干杯
当我试图从世博会 UI 运行 时,我遇到了同样的事情。
做了同样的事情,如答案中所述,但应用程序不是 运行ning。
当从命令行(在项目文件夹中)尝试 运行 exp android
时,应用程序 运行 成功,下一次来自 Expo UI 的 运行s 成功。
我遇到了类似的问题。
首先,我卸载了应用程序。
然后,我将 GenyMotion 指向 Android Studio 提供的 android sdk
接下来,我运行"adb kill-server"进入终端。
最后,我重新运行 "react-native run-android" 并获得了构建成功。
对我有用的步骤是:
$ adb kill-server
$ adb start-server
$ cd android
$ ./gradlew clean
$ cd ..
$react-nativerun-android
如果想保持系统清洁,您还可以使用不带 Android Studio 的 Genymotion:
- 找到 Genymotion 的
adb
副本。在 macOS 上,这通常是 /Applications/Genymotion.app/Contents/MacOS/tools/
.
- 将 Genymotion 工具目录添加到您的路径 - execute/add 行
export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH
到您的 ~/.bash_profile
或 ~/.bash_rc
.
- 确保您可以从终端运行 adb。
(来自 https://docs.expo.io/versions/latest/workflow/genymotion)
可能是你的 adb 版本不匹配
检查:
adb version
然后:
cd /Path/to/Android/Sdk/platform-tools && ./adb version
如果这两个不同,你这里有一个错误,只需从 sys 中删除 adb 并将 platform-tools 中的那个复制到 /usr/bin/
您系统上的 adb 版本与 android sdk platform-tools 上的 adb 版本不同。
以下建议适用于 Linux 操作系统
- 检查 sys adb 版本 运行 下面的命令
adb version
Android调试桥版本 1.0.39
- 检查 sdk adb 版本
cd /root/Android/Sdk/platform-tools
./adb version
Android调试桥版本 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
1.use自定义genymotion中的sdk路径。(假设这个方法不行,尝试执行第二个)
2.Manually使用此命令执行(SDK PATH/adb她
我会开始 -n/Package name/MainActivity).
C:\Users\AppData\Local\Android\Sdk/platform-tools/adb她
ll am start -n com.example/com.example.ManiActivity
并尝试使用 react-native 运行-android.运行 应用程序 运行
对于Ubuntu
对我有用!!
- 检查系统 adb 版本
adb version
Android调试桥版本 1.0.39
2 检查 sdk adb 版本
cd /home/user_name/Android/sdk/platform-tools
./adb version
Android调试桥版本 1.0.32
- 复制
sudo cp /home/user_name/Android/sdk/platform-tools/adb /usr/local/bin
就是这样!现在可以使用了。
当我尝试 运行 我在 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`
如果有人在 Windows 中使用 Android Studio 模拟器遇到此问题,则只需 运行 在 powershell 或 cmd 中执行以下命令:
taskkill /F /IM adb.exe
它应该会终止所有 adb 进程实例,然后您可以通过 Expo CLI 在 Android 上重新加载应用程序或再次启动应用程序。
我正在使用 React-Native、Android 和 Genymotion Mac。当我 运行 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
returns 这个:
List of devices attached
192.168.59.101:5555 device
到目前为止,我还没有找到 运行 我的应用程序在模拟器上的解决方案。有人遇到过同样的问题吗?
谢谢, 保罗
经过更多研究,我发现 Genymotion 默认使用它自己的 adb。
我切换到我的主 adb(与 react-native 使用的相同),它解决了问题。我猜是因为 Genymotion 的 adb 首先启动,所以我收到了 Address already in use
错误消息。
我正在使用 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
系统: Windows 10
我的问题: 将 Genymotion 设置为指向自定义 SDK 没有任何影响。我仍然收到:
Couldn't start project on Android: 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
我发现整个系统中使用的 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 中的 "Restart" 按钮,它立即开始工作。这是我在 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 资源位置)。
P.S. 我已经浏览了所有与此问题相关的 Whosebug 帖子。只是为了让你们知道我的任务管理器显示了 adb.exe 运行 的三个实例。如果你杀了他们中的任何一个,他们就会回来。
希望这对您有所帮助/干杯
当我试图从世博会 UI 运行 时,我遇到了同样的事情。
做了同样的事情,如答案中所述,但应用程序不是 运行ning。
当从命令行(在项目文件夹中)尝试 运行 exp android
时,应用程序 运行 成功,下一次来自 Expo UI 的 运行s 成功。
我遇到了类似的问题。
首先,我卸载了应用程序。 然后,我将 GenyMotion 指向 Android Studio 提供的 android sdk 接下来,我运行"adb kill-server"进入终端。 最后,我重新运行 "react-native run-android" 并获得了构建成功。
对我有用的步骤是:
$ adb kill-server
$ adb start-server
$ cd android
$ ./gradlew clean
$ cd ..
$react-nativerun-android
如果想保持系统清洁,您还可以使用不带 Android Studio 的 Genymotion:
- 找到 Genymotion 的
adb
副本。在 macOS 上,这通常是/Applications/Genymotion.app/Contents/MacOS/tools/
. - 将 Genymotion 工具目录添加到您的路径 - execute/add 行
export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH
到您的~/.bash_profile
或~/.bash_rc
. - 确保您可以从终端运行 adb。
(来自 https://docs.expo.io/versions/latest/workflow/genymotion)
可能是你的 adb 版本不匹配
检查:
adb version
然后:
cd /Path/to/Android/Sdk/platform-tools && ./adb version
如果这两个不同,你这里有一个错误,只需从 sys 中删除 adb 并将 platform-tools 中的那个复制到 /usr/bin/
您系统上的 adb 版本与 android sdk platform-tools 上的 adb 版本不同。 以下建议适用于 Linux 操作系统
- 检查 sys adb 版本 运行 下面的命令
adb version
Android调试桥版本 1.0.39
- 检查 sdk adb 版本
cd /root/Android/Sdk/platform-tools
./adb version
Android调试桥版本 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
1.use自定义genymotion中的sdk路径。(假设这个方法不行,尝试执行第二个)
2.Manually使用此命令执行(SDK PATH/adb她 我会开始 -n/Package name/MainActivity).
C:\Users\AppData\Local\Android\Sdk/platform-tools/adb她 ll am start -n com.example/com.example.ManiActivity
并尝试使用 react-native 运行-android.运行 应用程序 运行
对于Ubuntu
对我有用!!
- 检查系统 adb 版本
adb version
Android调试桥版本 1.0.39
2 检查 sdk adb 版本
cd /home/user_name/Android/sdk/platform-tools
./adb version
Android调试桥版本 1.0.32
- 复制
sudo cp /home/user_name/Android/sdk/platform-tools/adb /usr/local/bin
就是这样!现在可以使用了。
当我尝试 运行 我在 Genymotion 中的 react-native 项目时发生了同样的问题
对于Linux ubuntu 20.04
转到 /home/mycomputer/Android/Sdk/platorm-tools
运行 $./adb version
复制/usr/bin
$ sudo cp /home/raik/Android/Sdk/platform-tools/adb /usr/bin
然后我可以 运行 我在 genymotion 中的项目。
注意:在某些Linux系统中可能会复制到此路径/usr/local/bin`
如果有人在 Windows 中使用 Android Studio 模拟器遇到此问题,则只需 运行 在 powershell 或 cmd 中执行以下命令:
taskkill /F /IM adb.exe
它应该会终止所有 adb 进程实例,然后您可以通过 Expo CLI 在 Android 上重新加载应用程序或再次启动应用程序。