React-Native, Android, Genymotion: ADB server didn't ACK

前端 未结 11 1986
梦毁少年i
梦毁少年i 2020-11-28 02:44

I am working with React-Native, Android, and Genymotion on Mac. When I run react-native run-android I get this lines at the end of the launch operation:

相关标签:
11条回答
  • 2020-11-28 03:19

    Maybe your adb versions are mismatching

    Check:

    adb version 
    

    Then:

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

    If these two are different you have an error here, just remove adb from sys and copy the one that is in platform-tools to /usr/bin/

    0 讨论(0)
  • 2020-11-28 03:20

    For Ubuntu

    It works for me!!

    1. check sys adb version

    adb version

    Android Debug Bridge version 1.0.39

    2 check sdk adb version

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

    ./adb version

    Android Debug Bridge version 1.0.32

    1. copy

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

    that's all! It will work now.

    0 讨论(0)
  • 2020-11-28 03:21

    The steps worked for me are :

    • $ adb kill-server

    • $ adb start-server

    • $ cd android

    • $ ./gradlew clean

    • $ cd ..

    • $ react-native run-android

    0 讨论(0)
  • 2020-11-28 03:27

    1.use custom sdk path in genymotion.(Suppose this one won't work means,Try to execute the second one)

    2.Manually use this command to execute(SDK PATH/adb she ll am start -n/Package name/MainActivity).

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

    And try to run the application by using react-native run-android.

    0 讨论(0)
  • 2020-11-28 03:32

    After more research I've realized that Genymotion uses by default its own adb.

    I switched to my main adb (the same used by react-native) and it solved the issue. I guess that because Genymotion's adb was launched first I got the Address already in use error message.

    0 讨论(0)
  • 2020-11-28 03:35

    System: Windows 10

    My issue: Setting Genymotion to point to the custom SDK didn't have any affect. I still received the:

    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

    What I discovered was there was a difference in ADB versions being used throughout the system. Here is the command I used to find them:

    where /r C:\ adb.exe
    

    This produced the results:

    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
    

    Navigating to each directory and running:

    adb.exe version
    

    Allowed me to see that Expo was running ADB version:

    Android Debug Bridge version 1.0.36
    Revision fd9e4d07b0f5-android
    

    While Genymotion using the custom SDK had version (c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe):

    Android Debug Bridge version 1.0.39
    Revision 3db08f2c6889-android
    

    As a test I took the adb files (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) from

    c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
    

    and placed them into a backup folder. I then moved the adb files located at

    c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
    

    into that same location. I killed adb with:

    adb kill-server
    

    which caused a restart of the adb server automatically due to having my Genymotion device already running. I hit the "Restart" button inside of the Expo XDE and it immediately began working. Here is the log where I hit the restart button at 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).
    

    Conclusion: Genymotion and Expo may need to use the same version of adb so that Expo can properly communicate with the simulated device. Pointing Genymotion to your android SDK location as well as ensuring Expo XDE has that same version will allow correct communication between devices. I moved the Expo XDE version to the SDK location, but you might be able to go the other way (take the sdk ADB files and place them in the Expo XDE resource location).

    P.S. I've been all through the stackoverflow posts related to this issue. Just so you guys know my task manager shows three instances of adb.exe running. If you kill any of them they just come back.

    Hope this helps /cheers

    0 讨论(0)
提交回复
热议问题