when using adb /fastboot to test , we always see some errors on Windows . such as , "offline" or "more than one device/emulator" .
it is ultimate solution for these errors .
latest adb download : https://developer.android.com/studio/releases/platform-tools.html#download
:wait_for_adb_device
SETLOCAL
ECHO.
ECHO. waiting for adb enumeration...
ECHO.
adb kill-server
adb wait-for-device
:adb_loop
REM adb devices
REM NHVA180131 offline
REM NHVA180131 device
FOR /F "usebackq tokens=2" %%X in (`adb devices`) do (
ECHO "%%X"
IF "%%X" == "offline" (
FOR /F "tokens=2 delims= " %%l in ('tasklist /v ^| find "adb.exe"') do (
echo "%%l"
taskkill /f /PID %%l
)
)
)
adb wait-for-device
adb root
adb wait-for-device
REM adb wait-for-device
REM "error: more than one device/emulator"
IF %errorlevel% NEQ 0 (
echo "retry error: more than one device/emulator"
goto adb_loop
)
REM adb nodaemon server ----------------查看结果是TCP 5037的连接有问题
REM netstat -ano|findstr "5037" ---------------查看5037到底是哪个端口被占用了,kill it
ECHO. adb device is ready!!
ENDLOCAL
EXIT /b 0
:wait_for_fastboot_device
SETLOCAL
ECHO.
ECHO. waiting for fastboot enumeration...
ECHO.
SET /A wait_time=1
:fastboot_loop
SET /A device_count=0
FOR /F "usebackq tokens=2" %%X in (`fastboot devices`) do (
ECHO "%%X"
IF "%%X" == "fastboot" SET /A device_count+=1
)
REM ECHO device_count %device_count%
IF %device_count% LSS 1 (
ping -n 2 127.0.0.1 > NUL
SET /A wait_time+=1
choice /t 1 /d y /n >nul
ECHO waiting time %wait_time%
IF %wait_time% == 10 (
ECHO. Device is not connected, Still waiting ?????????
ECHO.
SET /A wait_time=1
pause
)
GOTO :fastboot_loop
)
IF %device_count% GTR 1 (
ECHO. Too many devices!
ping -n 2 127.0.0.1 > NUL
GOTO :fastboot_loop
)
:: Allow time for fastboot enumeration to stablize
ping -n 3 127.0.0.1 > NUL
ECHO. fastboot device is ready!!
ENDLOCAL
EXIT /b 0