studio programacion para herramientas fundamentos desarrollo con avanzado aplicaciones android adb android-view android-uiautomator

android - programacion - ¿Hay alguna manera de obtener el diseño y las vistas de la actividad actual a través de adb?



manual android studio avanzado (5)

Por razones ambientales, solo puedo usar los comandos adb .

¿Hay alguna manera de obtener los atributos de diseño actuales como id , position , text , etc. ?

Similar a lo que muestra uiautomatorviewer .


La herramienta de dump AndroidViewClient/culebra permite hacer precisamente eso. AndroidViewClient se puede usar como una biblioteca y también proporciona algunas herramientas como dump y culebra .

usage: dump [OPTION]... [serialno] Options: -H, --help prints this help -V, --verbose verbose comments -v, --version -I, --ignore-secure-device ignore secure device -E, --ignore-version-check ignores ADB version check -F, --force-view-server-use force view server use (even if UiAutomator present:w) -S, --do-not-start-view-server don''t start ViewServer -k, --do-not-ignore-uiautomator-killed don''t ignore UiAutomator killed -w, --window=WINDOW dump WINDOW content (default: -1, all windows) -a, --all dump all information about Views -i, --uniqueId dump View unique IDs -x, --position dump View positions -b, --bounds dump View bounds -d, --content-description dump View content descriptions -g, --tag dump View tags -c, --center dump View centers -f, --save-screenshot=FILE save screenshot to file -W, --save-view-screenshots=DIR save View screenshots to files in directory -D, --do-not-dump-views don''t dump views, only useful if you specified -f or -W -A, --device-art=MODEL device art model to frame screenshot (auto: autodetected) -Z, --drop-shadow drop shadow for device art screenshot -B, --glare screen glare over screenshot -h, --use-uiautomator-helper use UiAutomatorHelper Android app -X, --debug=LIST debug options

ejecutar dump sin opciones, solo imprime el árbol de Vistas y algunas de sus propiedades básicas, como ID

android.widget.FrameLayout com.android.launcher3.Workspace com.google.android.apps.nexuslauncher:id/workspace android.widget.FrameLayout com.google.android.apps.nexuslauncher:id/workspace_blocked_row android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text1 May 1 android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text2 MONDAY, 2017 android.widget.TextView Maps android.widget.ImageView com.google.android.apps.nexuslauncher:id/g_icon android.widget.ImageView com.google.android.apps.nexuslauncher:id/all_apps_handle android.view.ViewGroup com.google.android.apps.nexuslauncher:id/layout android.widget.TextView Messenger android.widget.TextView Chrome

por otro lado, si desea las posiciones de las vistas, puede ejecutar

$ dump -x

android.widget.FrameLayout (0, 0, 1440, 2392) com.android.launcher3.Workspace com.google.android.apps.nexuslauncher:id/workspace (0, 0, 1440, 2392) android.widget.FrameLayout com.google.android.apps.nexuslauncher:id/workspace_blocked_row (30, 126, 1380, 372) android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text1 May 1 (1037, 194, 337, 162) android.widget.TextView com.google.android.apps.nexuslauncher:id/date_text2 MONDAY, 2017 (1092, 356, 282, 73) android.widget.TextView Maps (30, 1614, 276, 372) android.widget.ImageView com.google.android.apps.nexuslauncher:id/g_icon (30, 214, 276, 196) android.widget.ImageView com.google.android.apps.nexuslauncher:id/all_apps_handle (636, 1986, 168, 98) android.view.ViewGroup com.google.android.apps.nexuslauncher:id/layout (0, 2084, 1440, 308) android.widget.TextView Messenger (306, 2112, 276, 280) android.widget.TextView Chrome (858, 2112, 276, 280)

Las opciones le darán control sobre la salida. Puedes obtener más información here .


Usé lo siguiente en una Mac para imprimir xml formateado en la consola:

adb shell uiautomator dump && adb pull /sdcard/window_dump.xml $TMPDIR && more $TMPDIR/window_dump.xml | xmllint --format -

Es posible que deba cambiar la ruta del archivo /sdcard/window_dump.xml para extraer en función de dónde se /sdcard/window_dump.xml archivo xml.


Use lo siguiente para ver el diseño xml en el bloc de notas o su editor de texto predeterminado

adb shell uiautomator dump && adb pull /sdcard/window_dump.xml && start window_dump.xml


Utilice el comando de adb shell uiautomator dump :

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

Por defecto, volca la jerarquía de vistas a $EXTERNAL_STORAGE/window_dump.xml

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

Por lo general, querrá extraer ese archivo a su PC para su posterior procesamiento, lo que sería un paso adicional. Pero hay un buen truco que permite combinar el volcado y la extracción en un solo comando. El uso de /dev/tty como destino de volcado generaría un solo comando que imprimiría todo el volcado en 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


adb pull $(adb shell uiautomator dump | grep -oP ''[^ ]+.xml'') /tmp/view.xml

Abra /tmp/view.xml en un navegador web como:

google-chrome /tmp/view.xml

adb exec-out uiautomator dump / dev / tty

de la otra respuesta no funcionó para mí.