Grunt adbpush fails

1. What is the problem? Be very detailed.
I am familiarising myself wiht ODK-X following the documentation and examples online which are very helpful. I have enabled USB debugging on my device and enabled file transfer but grunt adbpush and grunt adbpush -f both fail to transfer the files to the device. I have given the error from grunt adbpush below. grunt adbpush -f gives the same errors but more verbose. I am clearly doing something worng but can’t find anything in the documentation to show what I am doing wrong. Any help would be appreciated
2. What app or server are you using and on what device and operating system? Include version numbers.
Windows 10
Android v9
ODK Survey 2.1.2 rev 230
app-designer-2.1.2
3. What you have you tried to fix the problem?
Restarting the computer and device, transferring the example forms from app-designer
4. What steps can we take to reproduce the problem?
Does this work in similar setups
5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.
Output from the command line:
C:\Users\paul\Documents\Resources\app-designer-2.1.2\app-designer-2.1.2>grunt adbpush
detected Windows environment

Running “adbpull-props” task

Running “force:on” (force) task

Running “exec:adbpull:/sdcard/opendatakit/default/config/assets/app.properties:app/output/props/app.properties” (exec) task
adb: error: failed to get feature set: device still authorizing

Exited with code: 1.
Warning: Task “exec:adbpull:/sdcard/opendatakit/default/config/assets/app.properties:app/output/props/app.properties” failed. Used --force, continuing.

Running “exec:adbpull:/sdcard/opendatakit/default/data/device.properties:app/output/props/device.properties” (exec) task
adb: error: failed to get feature set: device still authorizing

Exited with code: 1.
Warning: Task “exec:adbpull:/sdcard/opendatakit/default/data/device.properties:app/output/props/device.properties” failed. Used --force, continuing.

Running “adbpull-fixprops” task
Warning: Unable to read “app/output/props/device.properties” file (Error code: ENOENT). Used --force, continuing.

Running “force:restore” (force) task

Running “remove-folders” task
Deleting /sdcard/opendatakit/default

Running “killall” task
Force stopping survey
Force stopping tables
Force stopping services

Running “exec:adbshell:am force-stop org.opendatakit.survey” (exec) task

error: device still authorizing
Exited with code: 1.
Warning: Task “exec:adbshell:am force-stop org.opendatakit.survey” failed. Use --force to continue.

Aborted due to warnings.

Execution Time (2019-05-31 13:41:32 UTC)
loading tasks 186ms ■■■■■■■■■■■■■■■■■■■■■■■■■ 48%
exec:adbpull:/sdcard/ope…ut/props/app.properties 57ms ■■■■■■■■ 15%
exec:adbpull:/sdcard/ope…props/device.properties 66ms ■■■■■■■■■ 17%
remove-folders 4ms ■ 1%
killall 6ms ■ 2%
exec:adbshell:am force-stop org.opendatakit.survey 63ms ■■■■■■■■■ 16%
Total 387ms

Welcome to the ODK forum, @Paul_Bessell! We’re glad you’re here. When you get a chance, please introduce yourself on this forum thread. I’d also encourage you to add a real picture as your avatar because it helps build community!

Thanks for the details on your error! So it looks like adbpush is failing because the device is not authorized. Please check if there is a pop up on your tablet asking to authorize the device (this is what the problem usually was for me). If that’s not it, please make sure you are following these set up steps:
https://docs.opendatakit.org/odk-x/docs-syntax-guide/#screenshots-from-odk-collect

Let us know if that works!

Thanks for your suggestions.

I have not been able to fix this using grunt adbpush. Instead I used Windows explorer to copy the contents of app-designer-2.1.2/app to SDCard/opendatakit/default and I can now interact with my forms and tables.

As @elmps2018 pointed out it appears to be your device is not authorized. Devices can get into semi-error states especially when installing errors for the first time. To clear the authorizations so your device will prompt you to approve the ADB bridge again.

Goto “Settings” → “Developer Options”. 1) Make sure developer options are switched to on. 2) Make sure USB debugging is switched to on. 3) Click on “Revoke USB debugging authorizations”

Step 3 will reset the debugging authorization and you should be able to give authorization for your computer to attach via the Android Debug Bridge.

I am having this same problem. I followed the instructions from @W_Brunette and it still the problem persist.
If I take the tablet to another machine it does not show any problem. If I also put another tablet on my laptop [grunt adbpush] does not work. So the issue is evident that its on this specific laptop. Any help will be appreciated.

Hi @cmuchuchuti! If you can push to the tablet from one machine but not another, it’s probably an issue with the setup of the computer rather than the tablet.

Building an Application — ODK-X Docs has some troubleshooting tips. You’ll need to try different commands:
grunt --version
adb --version
adb devices

to figure out which step is having a problem. It may, for example, be that Android SDK was not properly installed or on the right path and you may need to redo some of the steps here: Application Designer Prerequisites — ODK-X Docs on the computer having difficulties.

Thank you @elmps2018

The first command grunt --version was running well, but the adb --version was failing. I realized I had not added the Android SDK path to the System Variables. This site was helpful android - 'adb' is not recognized as an internal or external command, operable program or batch file - Stack Overflow

1 Like