Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to get current activity's layout and views via adb?

For environment reasons I can only use adb commands.

Is there a way to get the current layout attributes like id, position, text etc ?

Similar to what uiautomatorviewer shows.

like image 490
Filipe Arruda Avatar asked Oct 27 '14 11:10

Filipe Arruda


1 Answers

Use adb shell uiautomator dump command:

Usage: uiautomator <subcommand> [options]  Available subcommands:  help: displays help message  runtest: executes UI automation tests     runtest <class spec> [options]     <class spec>: <JARS> < -c <CLASSES> | -e class <CLASSES> >       <JARS>: a list of jar files containing test classes and dependencies. If         the path is relative, it's assumed to be under /data/local/tmp. Use         absolute path if the file is elsewhere. Multiple files can be         specified, separated by space.       <CLASSES>: a list of test class names to run, separated by comma. To         a single method, use TestClass#testMethod format. The -e or -c option         may be repeated. This option is not required and if not provided then         all the tests in provided jars will be run automatically.     options:       --nohup: trap SIG_HUP, so test won't terminate even if parent process                is terminated, e.g. USB is disconnected.       -e debug [true|false]: wait for debugger to connect before starting.       -e runner [CLASS]: use specified test runner class instead. If         unspecified, framework default runner will be used.       -e <NAME> <VALUE>: other name-value pairs to be passed to test classes.         May be repeated.       -e outputFormat simple | -s: enabled less verbose JUnit style output.  dump: creates an XML dump of current UI hierarchy     dump [--verbose][file]       [--compressed]: dumps compressed layout information.       [file]: the location where the dumped XML should be stored, default is       /storage/emulated/legacy/window_dump.xml  events: prints out accessibility events until terminated 

By default it dumps the views hierarchy to $EXTERNAL_STORAGE/window_dump.xml

adb shell uiautomator dump UI hierchary dumped to: /sdcard/window_dump.xml 

Usually you would want to pull that file to your PC for further processing which would be an extra step. But there is a neat trick which allows to combine dumping and pulling into a single command. Using /dev/tty as a dump destination would make a single command which would print the whole dump to the stdout:

adb exec-out uiautomator dump /dev/tty <?xml version='1.0' encoding='UTF-8' standalone='yes' ?><hierarchy rotation="0"><node ...></node></hierarchy>UI hierchary dumped to: /dev/tty 
like image 178
Alex P. Avatar answered Sep 20 '22 13:09

Alex P.