运行项目时,Expo / GenyMotion抛出“ ADB服务器未确认”

时间:2018-07-02 03:47:36

标签: linux ubuntu react-native genymotion expo

我正在尝试在Ubuntu上使用GenyMotion和Expo建立一个React Native项目。但是,当我在Expo中单击“设备”按钮将应用程序打包到模拟器上时,在Expo控制台中出现以下错误:

ADB Server didn't ACK error

我最初尝试通过内置的Android仿真器通过Android Studio使用React Native,因此我认为问题可能出在我的计算机具有多个ADB版本(当我从终端运行$ adb --start-server时,它将运行Android Studio二进制文件,而不是GenyMotion一种)。所以我:

  • 删除了我可以找到的所有与Android Studio相关的内容,包括Android/Sdk/和现在的$ adb --start-server的SDK
  • $ sudo apt-get remove adb android-tools-adb
  • 将GenyMotion中的Android SDK的文件路径设置为我的GenyMotion Android SDK。但是我猜想与默认设置相同,所以我不知道是否需要执行此操作?

    GenyMotion Android SDK

  • 从我的.bashrc文件中删除了与Android Studio相关的所有路径变量,包括$ANDROID_HOME。 (我应该设置$ANDROID_HOME指向GenyMotion Android SDK吗?

完成上述操作后,$ ps -aux | grep 5037输出以下内容:

ps output

即使退出GenyMotion和Expo之后,看起来仍然有一个派生的ADB守护程序在运行。如果我cd $ ./adb kill-server到GenyMotion SDK并运行ps(退出GM和Expo之后),则该过程不再出现在$ ./adb start-server的输出中。但是,有趣的是,如果我运行adb,我会得到:

ADB out of date

但是我不知道如何更新GenyMotion版本的ADB。这似乎也表明存在不同的ADB服务器程序和客户端程序。它是否正确?我只与SDK文件夹中的HttpInterceptor二进制文件进行过交互。

更新:我尝试再次从终端启动ADB,但无法重新创建冲突的版本错误。服务器现在可以完美启动。

我也遇到了隧道无法在Expo上工作的麻烦,因此我将主机更改为localhost。它有效,但是我不确定此更改的含义是什么

Expo host change

很明显,我是Android开发的新手,尤其是GenyMotion / Expo。但是我认为我在故障排除方面已经非常彻底。我还能尝试什么?

2 个答案:

答案 0 :(得分:0)

至少对于我来说,解决方案是我需要将export PATH="/home/darik/projects/android/genymotion/tools:$PATH"添加到我的.bashrc文件中。我猜测ADB服务器未确认的原因是Expo在我的路径env变量中找不到ADB服务器。

答案 1 :(得分:0)

对我来说,解决方案是我在系统上安装了多个adb。 而且我系统上的adb版本与android sdk平台工具上的adb版本不同。

我只是在PATH上添加了正确的文件夹C:\\ Ragnulf \ AppData \ Local \ Android \ Sdk \ platform-tools