我在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 回答
经过更多的研究,我意识到Genymotion默认使用它自己的adb .
我切换到我的主adb(反应原生使用的相同),它解决了这个问题 . 我想这是因为Genymotion的adb首先发布我收到了
Address already in use
错误消息 .我正在使用genymotion,但仅保罗的解决方案并没有解决错误(对于Mac) .
我不得不:
Update Android SDK to the latest version (24.4.1) via the SDK manager
在命令行中键入
android
在SDK管理器中找到最新的SDK工具并安装 .
安装后,SDK路径应更新新的SDK位置,如下所示 .
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
System: Windows 10
My issue: 设置Genymotion以指向自定义SDK没有任何影响 . 我还是收到了:
我发现在整个系统中使用的ADB版本存在差异 . 这是我用来找到它们的命令:
这产生了结果:
导航到每个目录并运行:
让我看到世博会正在运行亚行版:
使用自定义SDK的Genymotion有版本(c:\ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
作为测试,我从adb文件(adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll)中取出
并将它们放入备份文件夹中 . 然后我移动了位于的adb文件
进入同一个地方 . 我杀了adb:
由于我的Genymotion设备已经运行,导致adb服务器自动重启 . 我点击了Expo XDE内部的“重启”按钮,它立即开始工作 . 上午1:13:04点击重启按钮的日志:
Conclusion: Genymotion和Expo可能需要使用相同版本的adb,以便Expo可以与模拟设备正常通信 . 将Genymotion指向您的Android SDK位置以及确保Expo XDE具有相同版本将允许设备之间的正确通信 . 我将Expo XDE版本移动到SDK位置,但您可以采用其他方式(获取sdk ADB文件并将它们放置在Expo XDE资源位置) .
P.S. 我已经完成了与此问题相关的stackoverflow帖子 . 这样你们就知道我的任务管理器显示了三个运行adb.exe的实例 . 如果你杀了其中任何一个,他们就会回来 .
希望这有助于/欢呼
也许你的adb版本不匹配
校验:
然后:
如果这两个不同,那么你在这里有一个错误,只需从sys中删除adb并将platform-tools中的那个复制到/ usr / bin /
我有一个类似的问题 .
首先,我卸载了应用程序 . 然后,我将GenyMotion指向Android Studio提供的android sdk接下来,我将“adb kill-server”运行到终端中 . 最后,我重新运行了“react-native run-android”并获得了成功 .
当我尝试从expo UI运行时,我有同样的事情 . 做了相同的事情,如答案中所述,但应用程序没有运行 . 尝试从命令行运行
exp android
(在项目文件夹中)时,应用程序成功运行,下次从Expo UI运行成功 .对我有用的步骤是:
$ adb kill-server
$ adb start-server
$ cd android
$ ./gradlew clean
$ cd ..
$ react-native run-android
如果想保持系统清洁,你也可以 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)
您系统上的adb版本与android sdk platform-tools上的adb版本不同 . 以下建议适用于Linux操作系统
Android Debug Bridge版本1.0.39
Android Debug Bridge版本1.0.32
[注意:上面的命令删除了现有的adb,然后从sdk / platform-tools目录中复制adb]
然后使用此命令运行项目
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运行应用程序 .