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

时间:2016-03-12 15:09:46

标签: android react-native genymotion

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

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

谢谢, 保罗

13 个答案:

答案 0 :(得分:312)

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

enter image description here

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

答案 1 :(得分:44)

我正在使用genymotion,但Paul的解决方案并没有解决错误(对于Mac)。

我必须:

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

在命令行中键入android

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

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

enter image description here

然后更新$ 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

enter image description here

答案 2 :(得分:10)

系统:Windows 10

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

  

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

我发现在整个系统中使用的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服务器自动重启。我点击了#34;重启"世博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的实例。如果你杀了其中任何一个,他们就会回来。

希望这有助于/欢呼

答案 3 :(得分:6)

也许您的adb版本不匹配

检查:

adb version 

然后:

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

如果这两个不同,则此处有错误,只需从sys中删除adb并将platform-tools中的adb复制到/ usr / bin /

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我有类似的问题。

首先,我卸载了应用程序。 然后,我将GenyMotion指向Android Studio提供的android sdk 接下来,我跑了" adb kill-server"进入终端。 最后,我重新跑了" react-native run-android"并取得了成功。

答案 6 :(得分:2)

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

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

adb版本

Android Debug Bridge版本1.0.39

  1. 检查sdk adb版本
  

cd / root / Android / Sdk / platform-tools

     

./ adb版本

Android Debug Bridge版本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

答案 7 :(得分:2)

对于Ubuntu

它对我有用!

  1. 检查sys adb版本

adb版本

Android Debug Bridge版本1.0.39

2检查sdk adb版本

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

./ adb版本

Android Debug Bridge版本1.0.32

  1. 复制

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

仅此而已!现在可以使用。

答案 8 :(得分:1)

为我工作的步骤是:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew clean

  • $ cd ..

  • $ react-native run-android

答案 9 :(得分:1)

如果想要保持系统清洁,您还可以在没有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。
  4. (来自https://docs.expo.io/versions/latest/workflow/genymotion

答案 10 :(得分:1)

1。在genymotion中使用自定义的sdk路径。(假设此路径无效,请尝试执行第二个路径)

2。手动使用此命令执行(SDK PATH / adb she 会是开始-n /软件包名称/ MainActivity)。

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

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

答案 11 :(得分:0)

当我尝试在 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`

答案 12 :(得分:0)

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

taskkill /F /IM adb.exe

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