Запуск приложений через консоль android
Или вы можете использовать это напрямую:
Вы также можете указать действия, которые будут фильтроваться вашими фильтрами намерений:
Большое спасибо, я сделал так, чтобы функция оболочки в/ .bash_profile была намного быстрее function androidrun() < ant clean debug adb shell am start -n $1/$1.MainActivity >и ее использование androidrun com.example.test
Можно ли выполнить действие по умолчанию, вместо того, чтобы быть настолько специфичным для какого действия я намерен начать? У меня были проблемы с поиском приложения и активности. Я использовал эту линию, adb logcat | grep --line-buffered ActivityManager | grep --line-buffered чтобы перечислить все приложения, которые были показаны.Можно запустить приложение с указанием имени пакета только с помощью инструмента обезьяна , следуя этой схеме:
Команда используется для запуска приложения, используя инструмент обезьяны, который генерирует случайный ввод для приложения. Последняя часть команды - целое число, которое определяет количество сгенерированных случайных входных данных для приложения. В данном случае это номер 1, который фактически используется для запуска приложения (щелчок по значку).
Launcher по умолчанию. Вы можете упростить до adb shell monkey -p your.app.package.name 1 Можно ли использовать имя файла APK вместо имени пакета? Предположим, у меня есть файл APK, и я хочу установить и запустить его, возможно ли это? @IgorGanapolsky, если никаких действий не найдено, это приложение-служба и вообще не имеет никаких действий.Или вы можете использовать это:
Можно ли сделать это без указания имени действия, чтобы началось выполнение основного действия по умолчанию? @androiddeveloper Смотрите команду обезьяны ниже от depodefi : не нужно указывать имя активности!Пользователи linux / mac могут также создать скрипт для запуска apk с чем-то вроде следующего:
создайте файл с именем "adb-run.sh" с этими 3 строками:
затем "chmod + x adb-run.sh", чтобы сделать его исполняемым.
теперь вы можете просто:
Преимущество в том, что вам не нужно знать имя пакета или имя запускаемой деятельности. Точно так же вы можете создать "adb-uninstall.sh myapp.apk"
Примечание: для этого необходимо, чтобы у вас был путь на вашем пути. Вы можете найти его в новой папке инструментов сборки в SDK.
для Windows вы можете попробовать с Cygwin (не проверено) Это невероятно. Почему это не стандартная команда adb, мы никогда не узнаем. Вам не нужно иметь aapt на вашем пути (если «android»), если вы установите PATH в скрипте adb-run.sh, например: PATH = $ (dirname $ (which android)) /. ./build-tools/20.0.0:$PATHКроме того, я хочу упомянуть еще одну вещь.
Когда вы запускаете приложение из adb shell am , оно автоматически добавляет флаг FLAG_ACTIVITY_NEW_TASK, который меняет поведение. Смотрите код .
если задача уже запущена для действия, которое вы сейчас запускаете, то новое действие не будет запущено; вместо этого текущее задание будет просто выведено на переднюю часть экрана с состоянием, в котором оно было последним
Это заставило меня потратить несколько часов, чтобы выяснить, что пошло не так.
Итак, имейте в виду, что adb shell am добавьте флаг FLAG_ACTIVITY_NEW_TASK .
Если у вас есть смартфон на Android и вы знакомы с Linux то наверное хоть раз интересовались как использовать терминал в Android. Как вы знаете операционная система Android основана на ядре Linux, а это значит что здесь есть командная оболочка и в ней доступны множество стандартных команд Linux. По умолчанию стандартной утилиты терминала в Android нет. Получить к нему доступ можно несколькими путями:
- первый - скачать приложение Android Terminal Emulator с GooglePlay.
- второй подключиться к смартфону с компьютера с помощью отладчика adb.
Но наша статья не об этом, сегодняшняя тема: команды в Aandroid Terminal Emulator или точнее команды терминала Android.
В интернете есть много статей на эту тему но во всех них чего-то не хватает, описана пара специфичных команд и на этом все, а хочется полный список, включая команды Linux, тогда я и решил написать эту статью. Я не говорю что я опишу все команды, но постараюсь охватить большинство. Здесь приведено лишь короткое описание о некоторых командах Android я расскажу подробнее в следующих статьях, а о командах Linux можно найти подробную информацию в интернете.
Теперь об обозначениях — для некоторых команд необходимы права root, перед ними я буду ставить знак @.
Начнем. Команды терминала это ничто иное как небольшие консольные утилиты, большинство системных утилит находиться в папке /system/bin и еще несколько в /vendor/bin. Те что в vendor мы трогать не будем. Чтобы было удобнее расположу все команды по алфавиту.
adb - Отладчик андроид. Поскольку Android это все же Linux, к нему по USB можно подключать другие устройства в том числе смартфоны, adb позволяет ими управлять и дает доступ к их терминалу. описание его команд и возможностей тянет на целую статью, я опишу все в одной из следующих статей.
am - Менеджер окон (Action Manager), с помощью него можно запустить и остановить любое приложение или сервис. Например запуск приложения настройки:
am start -n com.android.settings/.Settings
badblocks — проверка флешки на наличие битых секторов:
Результат можно записать в файл:
badblocks /dev/block/mmcblk0 > /sdcard/badblocks
или вывести на экран:
badblocks -v /dev/block/mmcblk0
bmgr — управление резервным копированием Android.
cat — консольная утилита для просмотра содержимого файла.
chmod — аналогична команде Linux, меняет права доступа файла, доступен только восьмеричный формат записи.
Например дать все права (чтение, запись, выполнение):
chmod 777 /sdcard/file
chown — меняет владельца файла в Linux, Например:
chown root /sdcard/file
cmp — сравнивает два файлы
cmp /sdcard/file1 /sdcard/file2
cp — копирует файл, из источника(параметр 1) в приемник(параметр 2).
cp /sdcard/file1 /sdcard1/
Подробнее о cp можно почитать в статье копирование файлов в linux
date — показать текущую дату в системе.
Sat Nov 14 13:44:56 EET 2015
dd — создать образ диска, Параметры if= файл устройства диска, of=файл для записи
dd /dev/block/mmcblk0 /sdcard/img.iso
Будет создан образ флешки mmcblk0.
df — анализ свободного места на диске. Например:
df -h /dev/block/mmcblk1
Filesystem Size Used Free Blksize
/mnt/secure 484.5M 0.0K 484.5M 4096
/mnt/asec 484.5M 0.0K 484.5M 4096
/mnt/obb 484.5M 0.0K 484.5M 4096
/system 1.4G 971.7M 435.8M 4096
du — просмотр размера файла.
@ ext4_resize изменение размера раздела с файловой системой ext4.
@ fsck_msdos — проверка флешки на ошибки.
grep — утилита для фильтрации текста. Например вывести только строки содержащие terminal:
/sdcard/file | grep terminal
@ ifconfig — просмотр и управление сетевыми устройствами. Например просмотр информации о карте wifi:
Или отключение wifi:
ifconfig wlan0 down
Узнать список сетевых устройств можно командой:
iptables — управление настройками фаервола iptables, это очень обширная тема которой мы касаться не будем.
kill — уничтожить процесс по его PID.
Чтобы узнать pid можно использовать утилиту ps.
ln — создать ссылку на файл или папку, если указан параметр -s — символическую ссылку.
ln /sdcard/file /sdcard/file2
log — записать строку в лог системы.
logcut — просмотр лога системы в реальном времени.
ls — просмотр списка файлов и папок в директории:
lsmod — просмотр загруженных модулей ядра
lsof — просмотр открытых в системе файлов.
make_ext4fs — форматировать флешку в файловую систему ext4
md5 — подсчитать контрольную суму файла.
mkdir — создать папку, в текущем каталоге.
make2fs — форматировать флешку в файловую систему ext2
mount — примонтировать диск, образ или папку. Например:
mount -t ext2 /dev/block/mmcblk1p1 /mnt/sdcard
Подробнее о монтировании можно почитать в моей статье: Монтирование в Android
mv — переместить файл, аналогично cp
netcfg — просмотр информации об сетевых соединениях.
notify — утилита для слежения за изменениями в файловой системы с помощью подсистемы ядра inotify.
ping — известная утилита для проверки доступности сетевого узла.
pm — пакетный менеджер android, позволяет, устанавливать, удалять и просматривать установленные пакеты.
ps — просмотр всех запущенных процессов и информации о них.
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 1000 848 c0106ef8 0001bfb4 S /init
root 2 0 0 0 c006e038 00000000 S kthreadd
root 3 2 0 0 c0057a54 00000000 S ksoftirqd/0
reboot — перезагрузить смартфон из консоли.
resize2fs — аналогично resize_ext4, только для ext2
rm — удалить файл.
rmdir — удалить папку.
rmmod — выгрузить модуль ядра.
route — управление таблицей маршрутизации.
touch — создать пустой файл.
top — интерактивный вариант списка запущенных процессов.
@ screenshot — сделать снимок экрана.
shutdown — выключить смартфон.
service — управление сервисами. Например посмотреть список запущенных сервисов:
Это были все команды описание которых я нашел, по возможности список будет пополняться.
Речь пойдёт о проекте-утилитке, который может пригодиться всякому кто изучает Java и не всегда имеет под рукой ПК для просмотра работы примера кода в полевых условиях (как-то — в метро, маршрутке, кафешке и т.д.).
Необходимость создать сие поделище возникла когда я готовился к OCJP-сертификации. После успешного прохождения оной, решил предоставить плоды своих задумок на обозрение уважаемым участникам хабрасообщества.
Ноутбука у меня нет, а запускать примеры кода на смартфоне, сидя на кухне за чашечкой чая, удобно.
Так уж повелось, что бо́льшая часть примеров для обучения обычно приводится именно в формате консольных программ. Замечательный инструмент AIDE позволяет собирать Android-приложение на основе Eclipse-проектов. Возможность, увы, недостаточная для запуска консольных примеров методом копипасты.
Дело за малым — перенаправляем потоки ввода/вывода в UI контролы:
Консольная программа стартует в отдельном потоке из обработчика activity onResume() :
Здесь же можно задавать аргументы командной строки — старый добрый args . Пример — запуск BankTellerSimulation на 10 секунд:
Поддерживается работа нескольких потоков ( SimpleThreadsTest ):
HorseRace и BankTellerSimulation — примеры более сложных многопоточных приложений (взяты из книги Thinking in Java, 4th Ed by Bruce Eckel).
Ошибки времени выполнения
Напоследок, для полноты возможностей, был добавлен консольный ввод. Пока что мои познания в области пользовательского интерфейса Android не велики. Кое-как впихнуть EditText удалось, но результат не идеален :)
Приглашение ввода строки ( ReadingInputTest ):
Функции меню
Exit выключает процесс через System.exit(0) .
Программа «одноразовая». Повторных перезапусков нет (не хотелось возиться с очисткой значений статических полей).
Что делает Clear — большой секрет.
Что не работает
• assert 'ы Java. Т.е. оператор
исключение java.lang.AssertionError не кинет. Не путать с assert'ами JUnit — с ними всё в порядке!)
• Класс Console .
• Поле ввода не всегда подхватывает фокус.
Файлы проекта
Исходники можно забрать с GitHub, либо скачать zip-архив с проектами для Android Studio и Eclipse.
Операционная система Android хоть и создана изначально на основе Linux, по умолчанию не имеет многих классических элементов данной платформы вроде Терминала. При этом по необходимости на телефоне все же можно воспользоваться подобным ПО, включая связанные команды, подготовив и установив специальный эмулятор. В рамках нашей сегодняшней статьи мы постараемся достаточно подробно рассмотреть все связанные аспекты и, конечно же, основные команды Терминала на Андроид.
Использование терминала на Android
Как было сказано, по умолчанию на смартфоне отсутствует Терминал, поэтому для применения подходящих команд придется установить Android Terminal Emulator по представленной ниже ссылке. В качестве альтернативы можно также воспользоваться утилитой ADB, однако подобный подход потребует обязательного подключения к ПК и может быть не удобен для использования на постоянной основе.
-
Процедура установки приложения не отличается от любого другого софта для Android из официального магазина приложений, равно как и запуск, осуществляемый с помощью иконки Терминала на главном экране. Так или иначе после запуска появится окно с темным фоном и мигающим курсором.
Надеемся, мы развернуто описали основные особенности Терминала, так как в целом приложение имеет массу аспектов, заслуживающих внимания. При возникновении каких-то вопросов обязательно обращайтесь в комментариях, и мы постараемся помочь.
Команды терминала
Разобравшись с подготовкой, можно приступать к рассмотрению основных команд Терминала. В то же время стоит учитывать, подавляющее большинство вариантов полностью соответствует Linux и было нами рассмотрено в соответствующей статье на сайте. Кроме того, существует отдельная команда для просмотра всех доступных запросов.
Системные команды
- date – выводит на экран текущую дату, установленную в настройках устройства;
- -help – одна из основополагающих команд, отображающая свойства конкретного запроса. Работает строго через пробел после указания нужной команды;
- su – по умолчанию недоступная команда, позволяющая получить рут-доступ. Можно использовать для проверки наличия и работоспособности рут-прав на телефоне;
Активные процессы
-
ps – отображает все активные процессы в системе;
Файловая система
- cd – команда для перехода в определенную папку из Терминала. С помощью данного запроса можно общаться к файлам в директории без указания полного пути;
- cat – используется для чтения файла, например, чтобы открыть какой-либо документ средством по умолчанию. В целом все способы применения команды заслуживают отдельной статьи;
- cp – команда для создания дубликата любого выбранного файла;
- mv – позволяет переместить выбранный файл или каталог по новому пути;
Работа с приложениями
-
pm list packages – показывает список установленных пакетов приложений;
На этом мы заканчиваем рассмотрение основных команд Терминала для Android, так как перечисление всех возможных запросов заняло бы куда больше времени, в том числе и во время изучения списка. Вы всегда можете найти описание нужных команд в сети или воспользоваться ранее указанной статьей по Терминалу Линукса.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Читайте также: