Есть ли способ прочитать данные размещения приложений Android на экране с использованием имени пакета с помощью команды adb [duplicate]

, вы можете использовать свою папку / index.cshtml в качестве главной страницы, затем добавить скрипты раздела. Затем в вашем макете есть:

@RenderSection("scripts", required: false) 

и ваш index.cshtml:

@section scripts{
     @Scripts.Render("~/Scripts/file.js")
}

, и он будет работать над всеми вашими частичными просмотрами. Это работает для меня

19
задан Alex P. 18 September 2016 в 22:58
поделиться

5 ответов

Используйте команду 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

По умолчанию она сбрасывает иерархию представлений на $EXTERNAL_STORAGE/window_dump.xml

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

Обычно вы хотели бы вытащить этот файл на свой ПК для дальнейшей обработки, что было бы дополнительным шагом. Но есть опрятный трюк, который позволяет комбинировать демпинг и вытягивание в одну команду. Использование /dev/tty в качестве места назначения дампа сделает одну команду, которая будет печатать весь дамп в 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
24
ответ дан Alex P. 19 August 2018 в 14:21
поделиться
  • 1
    Хотелось добавить примечание о том, что может работать только один клиент UIAutomator или команда выведет «убит», и не работает. Я был в шоке от этого, пока не узнал, что меня заблокировали, выполнив тесты с использованием открытого соединения UIAutomator. – George Pantazes 7 March 2017 в 23:23
  • 2
    @Alex Я попробовал запустить команду ui automator dump, чтобы получить иерархию ui из эмулятора android, но похоже, что я не получаю полную дамп. Что я делаю не так? Я пытаюсь получить дамп для работы UCBrowser, работающего в эмуляторе Android, чтобы я мог получить привязку кнопки / элемента к клику. Я также задал вопрос о SO относительно того же здесь - stackoverflow.com/questions/43780490/… – Jignesh 4 May 2017 в 13:25
  • 3
    Удивительный трюк с /dev/tty – V. Kalyuzhnyu 28 August 2017 в 07:11
adb pull $(adb shell uiautomator dump | grep -oP '[^ ]+.xml') /tmp/view.xml

Откройте /tmp/view.xml в веб-браузере, например:

google-chrome /tmp/view.xml

adb exec-out uiautomator dump / dev / tty

из другого ответа не работал для меня.

2
ответ дан apricot 19 August 2018 в 14:21
поделиться
  • 1
    в моем компьютере не работает. я перехожу к этому adb pull $(adb shell uiautomator dump | egrep -o '/.*?xml') – chinaanihchen 23 January 2018 в 09:59

Инструмент dump AndroidViewClient / culebra позволяет делать именно это. AndroidViewClient можно использовать как библиотеку, а также предоставляет некоторые инструменты, такие как dump и 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 

работает dump без параметров, просто печатает дерево представлений и некоторые его основные свойства, такие как 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

, с другой стороны, если вы хотите разместить позиции, вы можете запустить

$ 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)

Параметры позволят вам контролировать выход. Вы можете получить дополнительную информацию здесь .

3
ответ дан Diego Torres Milano 19 August 2018 в 14:21
поделиться

Я использовал следующее на Mac для печати форматированного xml на консоль:

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

Возможно, вам придется изменить путь к файлу /sdcard/window_dump.xml, чтобы вытащить основанный на том, где файл xml сбрасывается.

1
ответ дан running-codebase 19 August 2018 в 14:21
поделиться
0
ответ дан Bryan Ibrahim 31 October 2018 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: