Скучный бложик тестировщика
Об Android, о тестировании, мысли, рекомендации, инструкции.
3 февраля 2018 г.
Проблема запуска Android emulator из командной строки
Хочется, но не удаётся |
Если вы попытались запустить эмулятор Android из командной строки и словили ошибку
emulator/qemu/windows-x86_64/qemu-system-i386.exe’: No such file or directory
для Windows, то вам сюда.
Первое, что нужно сделать — это убедиться, что эмулятор вообще можно запустить из командной строки. Перейдите в каталог с SDK, а там — в директорию tools, где лежит эмулятор. Для меня это команда
/Android/Sdk/emulator$ ./emulator -list-avds
Nexus_4_API_22
Nexus_5X_API_26
Nexus_5_API_18
Если у вас точно есть созданные эмуляторы, Студия их запускает, но эта команда сообщает, что эмуляторов нет, то вам нужно создать переменную окружения ANDROID_AVD_HOME с указанием пути к эмуляторам. Узнать путь можно прямо из Студии:
Находим виртуалки на диске |
Так мы попадём в каталог конкретного эмулятора. Теперь поднимаемся на уровень выше и видим все эмуляторы. Вот текущий путь нам и нужен, его и добавляем в эту переменную окружения. Для меня это
/Android/Sdk/emulator$ ./emulator @Nexus_5_API_18
emulator: WARNING: encryption is off
FramebufferData::restore: warning: a texture is deleted without unbinding FBO
FramebufferData::restore: warning: a texture is deleted without unbinding FBO
Warning: restoring GLES1 context from snapshot. App may need reloading.
- Либо вы можете создать свой alias на эмулятор:
umnik@um:/$ emulator @Nexus_5_API_18
[140147225495360]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib
Could not launch ‘/../emulator/qemu/linux-x86_64/qemu-system-i386’: No such file or directory
umnik@um:/$ alias emulator=$ANDROID_HOME/emulator/emulator
umnik@um:/$ emulator @Nexus_5_API_18
emulator: WARNING: encryption is off
^Cemulator: Saving state on exit with session uptime 2071 ms
umnik@um:/$
/.bashrc или где у вас там принято сохранять алиасы
- Вы даже можете создать переменную окружения $emulator (%emulator%) и вызывать её, хотя это не так удобно
cd $ANDROID_HOME/emulator/lib64/libstdc++$
mv libstdc++.so.6 libstdc++.so.6.bak
ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/emulator/lib64/libstdc++/libstdc++.so.6
/.bashrc. Тем более что можно сделать алиас сразу на конкретный эмулятор и тогда команда типа «nexus4_43» будет запускать эмулятор Nexus 4 с Android 4.3. В общем, вариантов у вас несколько — думайте сами.
В конце-концов, вы можете попытаться дождаться реального фикса проблемы, который обещали ещё в 26 версии, а сейчас актуальная 27. Дождаться фикса баги, статус которой сейчас Fixed. Успехов!
Источник
Android no such tool
Platform-tools: r31.0.3
ADB: 1.0.41 (31.0.3-7562133)
Fastboot: 31.0.3-7562133
Make_f2fs: 1.14.0 (2020-08-24)
Mke2fs: 1.46.2 (28-Feb-2021)
Последнее обновление утилит в шапке: 01.08.2021
ADB (Android Debug Bridge — Отладочный мост Android) — инструмент, который устанавливается вместе с Android-SDK и позволяет управлять устройством на базе ОС Android.
Работает на всех Android-устройствах, где данный функционал не был намеренно заблокирован производителем.
Здесь и далее: PC — ПК, компьютер к которому подключено устройство.
ADB — консольное приложение для PC, с помощью которого производится отладка Android устройств, в том числе и эмуляторов.
Работает по принципу клиент-сервер. При первом запуске ADB с любой командой создается сервер в виде системной службы (демона), которая будет прослушивать все команды, посылаемые на порт 5037.
Официальная страница
ADB позволяет:
- Посмотреть какие устройства подключены и могут работать с ADB.
- Просматривать логи.
- Копировать файлы с/на аппарат.
- Устанавливать/Удалять приложения.
- Удалять (очищать) раздел data.
- Прошивать (перезаписывать) раздел data.
- Осуществлять различные скрипты управления.
- Управлять некоторыми сетевыми параметрами.
Поставляется ADB в составе инструментария разработчика Андроид (Android SDK), который, в свою очередь входит в состав Android Studio.
Если что-то неправильно, то в списке подключенных устройств (List of devices attached) будет пусто.
Скрытые команды ADB
adb -d Команда посылается только на устройство подключенное через USB.
Внимание: Выдаст ошибку, если подключено больше одного устройства.
adb -e Команда посылается на устройство в эмуляторе.
Внимание: Выдаст ошибку, если подключено больше одного эмулятора.
adb -s Команда посылается на устройство с указанным серийным номером:
adb -p Команда посылается на устройство с указанным именем:
Если ключ -p не указан, используется значение переменной ANDROID_PRODUCT_OUT.
adb devices Список всех подсоединенных устройств.
adb connect [: ] Подсоединиться к андроид хосту по протококу TCP/IP через порт 5555 (по умолчанию, если не задан).
adb disconnect [ [: ]] Отсоединиться от андроид подключенного через TCP/IP порт 5555 (по умолчанию, если не задан).
Если не задан ни один параметр, отключиться от всех активных соединений.
adb push Копировать файл/папку PC->девайс.
adb pull [ ] Копировать файл/папку девайс->PC.
adb sync [ ] Копировать PC->девайс только новые файлы.
Ключи:
-l Не копировать, только создать список.
adb shell Запуск упрощенного unix shell.
Примеры использования
adb emu Послать команду в консоль эмулятора
adb install [-l] [-r] [-s] Послать приложение на устройство и установить его.
Пример: adb install c:/adb/app/autostarts.apk Установить файл autostarts.apk лежащий в папке /adb/app/ на диске с:
Ключи:
-l Блокировка приложения
-r Переустановить приложение, с сохранением данных
-s Установить приложение на карту памяти
Установка split apk
adb uninstall [-k] Удаление приложения с устройства.
Ключи:
-k Не удалять сохраненные данные приложения и пользователя.
adb wait-for-device Ждать подключения устройства.
adb start-server Запустить службу/демон.
adb kill-server Остановить службу/демон.
adb get-state Получить статус:
offline Выключен.
bootloader В режиме начальной загрузки.
device В режиме работы.
adb get-serialno Получить серийный номер.
adb status-window Непрерывный опрос состояния.
adb remount Перемонтировать для записи. Требуется для работы скриптов, которые изменяют данные на.
adb reboot bootloader Перезагрузка в режим bootloader.
adb reboot recovery Перезагрузка в режим recovery.
adb root Перезапуск демона с правами root
adb usb Перезапуск демона, прослушивающего USB.
adb tcpip Перезапуск демона, прослушивающего порт TCP.
adb ppp [параметры] Запуск службы через USB.
Note: you should not automatically start a PPP connection. refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
Параметры:
defaultroute debug dump local notty usepeerdns
FastBoot — консольное приложение для PC. Используется для действий над разделами
fastboot devices Список присоединенных устройств в режиме fastboot.
fastboot flash Прошивает файл .img в раздел устройства.
fastboot erase Стереть раздел.
Разделы: boot, recovery, system, userdata, radio
Пример: fastboot erase userdata Стирание пользовательских данных.
fastboot update Прошивка из файла имя_файла.zip
fastboot flashall Прошивка boot + recovery + system.
fastboot getvar Показать переменные bootloader.
Пример: fastboot getvar version-bootloader Получить версию bootloader.
fastboot boot [ ] Скачать и загрузить kernel.
fastboot flash:raw boot [ ] Создать bootimage и прошить его.
fastboot devices Показать список подключенных устройств.
fastboot continue Продолжить с автозагрузкой.
fastboot reboot Перезагрузить аппарат.
f astboot reboot-bootloader Перезагрузить девайсв режим bootloader.
Перед командами fastboot можно использовать ключи:
-w стереть данные пользователя и кэш
-s Указать серийный номер устройства.
-p
Указать название устройства.
-c Переопределить kernel commandline.
-i Указать вручную USB vendor id.
-b Указать в ручную базовый адрес kernel.
-n
Указать размер страниц nand. по умолчанию 2048.
Команду logcat можно использовать с машины разработки
$ adb logcat
или из удаленного shell
# logcat Каждое сообщение лога в Android имеет тэг и приоритет
Тэг – это строка указывающая компонент системы, от которого принято сообщение (например: View для системы view)
Приоритет – имеет одно из нижеследующих значений (в порядке от меньшего к большему):
V — Verbose (Низший приоритет).
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (Наивысший приоритет, при котором ничего не выводится).
Получить список тэгов, используемых в системе, вместе с их приоритетами можно запустив logcat. В первых двух столбцах каждого из выведенных сообщений будут указаны / .
Пример выводимого logcat сообщения:
I/ActivityManager( 585): Starting activity: Intent
Для уменьшения вывода лога до приемлемого уровня нужно использовать выражения фильтра. Выражения фильтра позволяют указать системе нужные комбинации и , остальные сообщения система не выводит.
Выражения фильтра имеют следующий формат : . где указывает нужный тэг, указывает минимальный уровень приоритета для выбранного тэга. Сообщения с выбранным тэгом и приоритетом на уровне или выше указанного записываются в лог. Можно использовать любое количество пар : в одном выражении фильтра. Для разделения пар : используется пробел.
Пример ниже выводит в лог все сообщения с тэгом «ActivityManager» с приоритетом «Info» или выше, и сообщения с тэгом «MyApp» и приоритетом «Debug» или выше:
adb logcat ActivityManager:I MyApp:D *:S
Последний элемент в выражении фильтра *:S устанавливает приоритет «silent» для всех остальных тэгов, тем самым обеспечивая вывод сообщений только для «View» и «MyApp». Использование *:S – это отличный способ для вывода в лог только явно указанных фильтров (т.е. в выражении фильтра указывается «белый список» сообщений, а *:S отправляет все остальное в «черный список»).
При помощи следующего выражения фильтра отображаются все сообщения с приоритетом «warning» или выше для всех тэгов:
adb logcat *:W
Если logcat запускается на машине разработчика (не через удаленный adb shell), можно также установить значение выражения фильтра по умолчанию задав переменную окружения ANDROID_LOG_TAGS:
export ANDROID_LOG_TAGS=»ActivityManager:I MyApp:D *:S»
Следует обратить внимание что задав переменную окружения ANDROID_LOG_TAGS она не будет работать в эмуляторе/устройстве, если вы будете использовать logcat в удаленном shell или используя adb shell logcat.
Вышеописанная команда export работает в ОС *nix и не работает в Windows.
Контроль формата вывода лога
Сообщения лога в дополнение к тэгу и приоритету содержат несколько полей метаданных. Можно изменять формат вывода сообщений показывая только конкретные поля метаданных. Для этого используется параметр -v и указывается один из ниже перечисленных форматов вывода.
brief Показывать приоритет/тэг и PID процесса (формат по умолчанию).
process Показывать только PID.
tag Показывать только приоритет/тэг.
thread Показывать только процесс:поток и приоритет/тэг.
raw Показать необработанное сообщение, без полей метаданных.
time Показывать дату, время вызова, приоритет/тэг и PID процесса.
long Показывать все поля метаданных и отдельно сообщения с пустыми строками.
При запуске logcat можно указать формат вывода используя параметр -v:
adb logcat [-v
Источник
Android no such tool
Для функционирования программы необходимы права root пользователя.
Краткое описание:
Программа для управления ROOT правами.
Описание:
Многим надоел старое и неудобное приложение Superuser присутствующее в большинстве рутованых ROMов.
Список новых возможностей:
— Все права показаны по имени приложения а не по UID)
— Дополнительные уведомления
— Диалог показывающий подробности прав.
— Улучшенный диалог разрешения.
— Права удаляются вместе с удалением приложения, что не позволяет получить права другому приложению.
— Множественные улучшения дизайна
Здесь 4 версии, которые должны заработать на большинстве телефонов. Если вы не знаете с какой версии начать выбирайте безопасную версию для вашей версии ОС. Если после ребута ничего не заработало, попробуйте небезопасную версию. Разница между ними в том что безопасная версия проводит дополнительную проверку чтобы убедится что приложение которое запрашивает доступ — системное. Если у вас не работает безопасная версия не волнуйтесь, это особенность вашей прошивки
Все действия вы делаете на свой страх и риск. Ответственность за потеренную информацию и прибитые прошивки никто не несет. Перед использованием данного приложения настоятельно рекомендуется сделать полный backup системы
Русский язык в Elite: Ставим простой апк, потом через рекавери устанавливаем Elite. Язык меняется на помесь китайского и английского, затем ставим еще раз обычный апк и у нас остается Elite на русском!!
Версии su-x.x.x — для Donut\Cupcake
Версии su-x.x.x-e — для Eclair
Шить через recovery как обычное обновление
Источник
Android no such tool
Для функционирования программы необходимы права root пользователя.
Краткое описание:
Программа для управления ROOT правами.
Описание:
Многим надоел старое и неудобное приложение Superuser присутствующее в большинстве рутованых ROMов.
Список новых возможностей:
— Все права показаны по имени приложения а не по UID)
— Дополнительные уведомления
— Диалог показывающий подробности прав.
— Улучшенный диалог разрешения.
— Права удаляются вместе с удалением приложения, что не позволяет получить права другому приложению.
— Множественные улучшения дизайна
Здесь 4 версии, которые должны заработать на большинстве телефонов. Если вы не знаете с какой версии начать выбирайте безопасную версию для вашей версии ОС. Если после ребута ничего не заработало, попробуйте небезопасную версию. Разница между ними в том что безопасная версия проводит дополнительную проверку чтобы убедится что приложение которое запрашивает доступ — системное. Если у вас не работает безопасная версия не волнуйтесь, это особенность вашей прошивки
Все действия вы делаете на свой страх и риск. Ответственность за потеренную информацию и прибитые прошивки никто не несет. Перед использованием данного приложения настоятельно рекомендуется сделать полный backup системы
Русский язык в Elite: Ставим простой апк, потом через рекавери устанавливаем Elite. Язык меняется на помесь китайского и английского, затем ставим еще раз обычный апк и у нас остается Elite на русском!!
Версии su-x.x.x — для Donut\Cupcake
Версии su-x.x.x-e — для Eclair
Шить через recovery как обычное обновление
Источник