Android Manager - модуль для управления android эмуляторами

Делитесь модулями
  • Такими темпами Паша Дуглас останется без лохов клиентов хD
    За модуль респект, молодец что начал работу в этом направлении!

  • Круто.. Но немного не понятно с настройкой.. Мануал б подробный для не далеких))))

  • @znuker XML априори только текущего экрана видно, во всех библиотеках так.

  • Для Nox, если сначала ввести в консоли:

    adb connect 127.0.0.1:62001
    

    То после этого модуль видит эмулятор. Но почему - то не все действия работают.
    Пробовал открывать ссылку в браузере, смотреть установленные программы, это все работает.
    Но вот приложения не запускаются, просто ничего не происходит.

    Так же в переменные среды добавлял первым папку с Nox и тогда не нужно было вручную подключаться через консоль и модуль сразу видел эмулятор. Но что так, что с подключением через консоль запуск приложений не работает. Gow устанавливал, ничего не изменилось.

    Кстати еще из возможных проблем почему нет подключения. В Nox отладка по USB включается в скрытом меню для разработчиков, а в Bluestacks в настройках приложения.

  • @spacerange да, эта команда вроде как нужна для реальных телефонов, видимо и для нокса тоже. Что с телефонами, что с ноксом 100 лет не работал.

    По поводу открытия приложений, там обычная adb команда:

    adb shell am start -n activityName
    

    Вместо activityName - ваше активити. Возможно, вместо активити название приложения вводите. Попробуйте руками в cmd выполнить.

    Активити можно получить через модуль действием "Получить активити". Перед этим открыв приложение. Еще удобно смотреть через аппку Lucky Patcher. Там же можно, кстати, выключать рекламу и пермишенсы у прил.

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    Вместо activityName - ваше активити. Возможно, вместо активити название приложения вводите. Попробуйте руками в cmd выполнить.
    Активити можно получить через модуль действием "Получить активити". Перед этим открыв приложение.

    Да вы правы, я вызывал список приложений и вводил данные оттуда.
    Сейчас сделал как вы сказали, запустил приложение и проверил текущее активити и на самом деле оно более длинное. Приложение запустилось, буду тестировать дальше.

    Так же почему - то когда подключился через adb connect, то у меня перестало работать действие получить активити, выдавало ошибку. Сделал снова как раньше, добавил в переменные среды папку с Nox и все заработало.

  • @thepappo Закрытие приложения работает, а очистить кеш почему - то выдает ошибку:

    Процесс завершился с кодом: 1. Ошибка: Android Debug Bridge version 1.0.36 Revision 0e9850346394-android -a - directs adb to listen on all interfaces for a connection -d - directs command to the only connected USB device
    

    Свайп:

    Error: Error occured while sending post command to server on device connect ECONNREFUSED 127.0.0.1:9008
    
  • @spacerange это опять же ошибки adb. Вообще через adb нокса подключаться не очень правильно. Там старая версия. Его лучше переименовать в _adb.exe. А использовать adb из Android Studio SDK. Я позже потестирую на ноксе. Сейчас занят апдейтом модуля по части многопотока и некоторых других фишек.

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    @spacerange это опять же ошибки adb. Вообще через adb нокса подключаться не очень правильно. Там старая версия. Его лучше переименовать в _adb.exe. А использовать adb из Android Studio SDK. Я позже потестирую на ноксе. Сейчас занят апдейтом модуля по части многопотока и некоторых других фишек.

    В свое время делал многопоток на голом adb + nox, правда писал на nodejs но можно было тоже самое написать в БАС. Я к тому что мне кажется на adb меньше гемора чем с этим фреймворком, который в модуле, он мне еще тогда не понравился.

  • А вообще советую для всех у кого ошибки adb или связанные с селекторами, проделать следующие процедуры:

    1. Скачать и установить Node JS.
    2. Установить пакет appium-doctor
    npm install appium-doctor -g
    
    1. И прочекать для андроида:
    appium-doctor --android
    

    Вот эти пункты должны быть ОК:
    Screenshot_1.png

  • @UserTrue основная проблема - это получение xml дампа. Он нужен, чтобы искать элементы по xpath. Если на голом adb, то его можно дергать через:

    adb shell uiautomator dump
    

    Проблема в том, что тут используется первая версия юиавтоматора и действие занимает 2,5-3 секунды, что овер долго. Плюс, уже сам гугл давно отказался от поддержки первой версии.

    Во второй версии юиавтоматора уже как раз надо запускать appium сервер и ставить драйвер uiautomator2. На сервер уже посылаются запросы через REST API, и сервер отправляет команды на эмуль. Это работает на порядок быстрее, чем первая версия юиавтоматора. Тот же дамп делает практически мгновенно.

    Короче. Я написал уже все. Надо только собрать модуль, что самое сложное. Ты, думаю, меня понимаешь ))

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    @spacerange это опять же ошибки adb. Вообще через adb нокса подключаться не очень правильно. Там старая версия. Его лучше переименовать в _adb.exe. А использовать adb из Android Studio SDK. Я позже потестирую на ноксе. Сейчас занят апдейтом модуля по части многопотока и некоторых других фишек.

    Да это из за adb, я где - то видел рекомендацию заменить adb.exe из папки Android Studio SDK в папку Nox.
    Попробовал и свайп заработал, но очистка кеша уже теперь выдает другую ошибку, что - то типа неизвестная команда. Но да ладно, буду думать как использовать только Android Studio SDK, что - то никак не хочет к нему подключаться нормально.

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    adb shell uiautomator dump

    Да я через него и делал, это было года 3 назад )) Мне тогда не понравился вся эта затея и больше этим не занимался, хотя справедливости ради сделал рабочий многопоток для одной прилы. Тогда еще было много проблем с самими эмуляторами сейчас тот же nox работает гораздо лучше.

  • @UserTrue многопоток будет работать, конечно. Ну то есть асинхрон. Но скорость будет дно. Я сам на этой библиотеке пишу. Но в ноду ее не присрешь, поэтому было решено присрать аппиум, который по сути для этих задач максимально кошерен и для него есть норм врапперы на ноде.

  • Выяснил опытным путем что именно без Gow получить текущее активити не работает.
    То есть он обязателен для использования модуля. Очистить кеш так и выдает ошибку:

    SubprocessError: Процесс завершился с кодом: 1. Ошибка: adb.exe: unknown command adb 
    

    Удалил пути и оставил только Android Studio SDK, что по сути дало тоже самое когда я заменял adb.exe в папке Nox. Только теперь нужно вручную подключаться через команду adb connect. В appium-doctor у меня почему - то не было JAVA HOME, прописал вручную, ничего не дало.

    Очистить кеш выполнил командой:

    adb shell pm clear <package_name>
    
  • Еще при использовании UI Automator Viewer, заметил что он не может снять дамп пока BAS подключен к эмулятору, приходится переподключаться в консоли, снимать дамп и потом снова подключаться в BAS.

    А так, в целом модуль мне нравится, основное вроде как работает, да некоторые детали нужно допилить и еще есть определенные сложности с первоначальной настройкой (хотя может и мне так повезло).

  • Может кто сталкивался с проблемой вообще нет отклика на adb, в основной консоли cmd, установил android SDK, вроде всё настроил но как такового отклика нет, только если через консоль nox'a
    76a4aea1-4638-460c-8590-5f567f9435aa-image.png

  • @spacerange said in AndroidManager - модуль для управления android эмуляторами:

    В appium-doctor у меня почему - то не было JAVA HOME, прописал вручную, ничего не дало.

    Там не все версии Java вроде работают. У меня такая openjdk-8u282-b08. В папке с установленной джавой должна быть папка bin. Вот так выглядит:

    Screenshot_1.png

    @spacerange said in AndroidManager - модуль для управления android эмуляторами:

    Еще при использовании UI Automator Viewer, заметил что он не может снять дамп пока BAS подключен к эмулятору, приходится переподключаться в консоли, снимать дамп и потом снова подключаться в BAS.

    Да, есть такая проблема. По ходу вьювер и либа используют один и тот же порт для подключения. На новой версии такого не будет.

  • @BoToH4Nk переменные окружения ANDROID_HOME и JAVA_HOME установлены? Если да, перезапустите ПК. Винда их только после перезагрузки видит.


  • Версия 2.0

    Основное изменение данной версии - это переход на Appium, который использует драйвер uiautomator2 для отправки команд на эмуляторы. Appium используется для всех действий, связанных с взаимодействием с элементами по xpath, а также для действий "Подключиться к устройству" (создается сессия указанного устройства по серийному номеру на сервере), "Отключиться от устройства", "Сделать скриншот", "Открыть панель уведомлений" и "Получить XML дамп".

    За счет использования аппиума теперь работает многопоток.


    Другие изменения:

    1. Node js обновлен до версии 18.10.0.
    2. Удалены действия:
      "Информация об устройстве" - в аппиуме нет метода для этого действия, при этом не понятно, какие настройки устройства нужно собирать.
    3. Добавлены действия:
      "Запустить сервер";
      "Остановить сервер";
      "Установлено ли приложение";
      "Запущено ли приложение";
      "Открыть панель уведомлений".
    4. Изменены настройки действий:
      "Подключиться к устройству" - все поля, кроме "Серийный номер" были удалены. Добавлен переключатель "Настроить устройство";
      "Сделать скриншот" - удалены поля "Качество изображения" и "Метод сохранения на устройстве" (appium не позволяет выбирать качество и сам выбирает папку для сохранения на устройстве).
    5. Для следующих действий параметр "Число шагов" изменен на "Продолжительность, мс":
      "Долгий клик по xpath";
      "Долгий клик по координатам";
      "Свайпнуть по экрану".
    6. Исправлена ошибка в действии "Скролл к элементу". Если в направлении скролла было выбрано "влево" или "вправо", то скролл осуществлялся вниз.
    7. Для действий, требующих ожидания, теперь передаются таймауты в Node js из настроек.

    Добавил инструкцию по установке и началу работы в шапку темы.
    Добавил обновленный шаблон для версии 2.0 в качестве примера.