Использование терминала при разработке под Андроид
Будучи поклонником терминала, я давно хотел написать об этой теме. Кроме того, знание того, как использовать терминал, значительно ускоряет работу.
Моя цель в этой статье — поделиться с вами тем, как я использую терминал при разработке под Android.
iTerm2
Поскольку мы собираемся проводить много времени в командной строке, давайте установим терминал получше, нежели стандартный. Предлагаю вашему вниманию iTerm2.
ITerm2 — современный терминал с функциями, которые вы так давно желали видеть. Например, разбиение панели, пользовательские цветовые схемы, история, контроль над горячими клавишами, а также множество других удобных настроек, которые вы найдете полезными.
oh-my-zsh
Когда вы запускаете терминал, он запускает оболочку под названием Bash. Bash на сегодняшний день является самой популярной оболочкой и поставляется с почти каждой операционной системой на базе UNIX. Однако есть альтернативы Bash, которые делают использование терминала более быстрым и удобным для разработчиков.
По умолчанию oh-my-zsh поставляется с плагином, который предоставляет множество полезных функций.
Автозаполнение
Zsh-autosuggestions — это быстрые/ненавязчивые предложения для вставки в zsh. Он предлагает команды по мере ввода на основе истории команд:
Обратный умный поиск
Вы можете нажать Control + R, чтобы выполнить обратный умный поиск в истории команд. Начните вводить команду, и оболочка будет автозаполнена с ранее введенными командами.
Затем вы можете либо нажать Enter, чтобы выполнить предложенную команду, либо используйте стрелки влево/вправо, чтобы отредактировать команду, или продолжайте нажимать Control + R для переключения между другими возможными командами.
DryRun
Вы наткнулись на классную библиотеку github, но что вам нужно сделать, чтобы протестить ее на вашем телефоне?
- Нажать кнопку Скачать zip
- Извлечь zip-файл
- Открыть Android Studio
- Импортировать скачанный проект
- Sync gradle
- Запустить проект
- Выбрать устройство
- Опробовать
- Удалить папку проекта и zip-файл, когда вам это более не требуется.
Или.
Вы можете использовать dryrun:
dryrun REMOTE_GIT_URL
Билдим проект быстрее/без сети
Флаг —offline говорит gradle всегда использовать модули зависимостей из кеша, независимо от того, должны ли они быть проверены. При работе в автономном режиме, gradle никогда не попытается получить доступ к сети для выполнения разрешения зависимостей. Если требуемые модули отсутствуют в кэше зависимостей, выполнение сборки завершится с ошибкой.
Сборка на полной скорости:
./gradlew assembleDevelopDebug --offline
Выполнение ваших модульных тестов на полной скорости:
./gradlew test --offline
В качестве альтернативы, в Android Studio вы можете сделать gradle build полностью офлайн, активировав эту опцию:
Settings -> Build, Execution, Deployment -> Build tools -> Gradle
alfi
Как Android-разработчик, вы, вероятно, используете Android Studio с Gradle. Одним из замечательных преимуществ является управление зависимостями, которое автоматически загружает артефакты из репозитория и делает их доступными для вашего приложения. В принципе, вы просто добавляете одну строку в файл build.gradle, и ваша библиотека включена. Довольно легко, правда?
Но вы точно знаете эту строку?
Для этого существует ALFI:
- Введите: alfi NAME_OF_THE_LIBRARY
- Скопируйте нужную библиотеку
- Вставьте в build.gradle
Не требуется взаимодействие с пользовательским интерфейсом и до 20 результатов сразу!
alfi picasso
Понимание gradle задач
Если вы запустите ./gradlew tasks, вы получите список доступных функций gradle. То, что не указано в списке, это короткие версии команд, так что вот небольшой список допущений, которые вы можете сделать,
- iDD == installDevelopmentDebug
- aDD == assembleDevelopmentDebug
- cC == connectedCheck
- etc.
Вы можете начать делать следующим образом:
./gradlew :App:iDD
Так гораздо компактнее.
Android Rocket Launcher
Это gradle плагин, который добавляет задачи к вашим модулям Android для установки и запуска всех вариантов, поэтому нет необходимости запускать ./gradlew installDebug и переходить на телефон, находить приложение среди 50 приложений, которые вы установили, и запускать нужное.
Все, что вам нужно сделать, это добавить 2 строки в build.gradle
Совет: не забывайте, что даже при запуске приложения с терминала вы всегда можете активировать процесс отладки без необходимости перезапускать приложение.
Вывод юнит-тестов на консоль
Небольшой трюк, который позволяет увидеть результаты тестирования устройств Android.
android < . testOptions.unitTests.all < testLogging < events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' outputs.upToDateWhen < false >showStandardStreams = true > > >
Теперь, когда вы запускаете свои тесты, они выводят что-то вроде этого:
Удобные logcats
Во время разработки приложений вы часто хотите показывать только сообщения журнала, поступающие из вашего приложения. К сожалению, поскольку идентификатор процесса изменяется каждый раз, когда вы развертываете приложение на телефоне, то сортировка сообщений становится проблемой.
Этот небольшой инструмент решает эту проблему путем фильтрации по пакету приложения. Поставьте нужный пакет в качестве единственного аргумента и получите желаемый результат.
pidcat github.cesarferreira.helloworld
Итог
- Установите iterm2, более функциональный терминал, чем стандартный
- Используйте оболочку oh-my-zsh для автозаполнения
- Не забывайте про компактные команды ./gradlew iDD
- Выполняйте команды быстрее, используя флаг —offline
- Не открывайте приложение на телефоне вручную после установки, используйте этот плагин для автоматизации процесса
- Присоедините процесс отладки без перезапуска приложения
- Наслаждайтесь более удобным вывод logcat с pidcat.
- Java
- Совершенный код
- Разработка мобильных приложений
- Разработка под Android
Обзор Android Terminal Emulator
Android является полностью открытой и кастомизируемой системой. Всё благодаря тому, что в ней используется ядро Linux — самой популярной Open Source системы. На основе Linux создано большое количество ОС для настольных компьютеров и серверов, а также других электронных устройств, в числе которых можно отметить гаджеты на базе Android.
Некоторые операции совершаются при помощи консоли или терминала. Это такая системная утилита без графического интерфейса, которая выполняет задания после ручного ввода команды. На Android по умолчанию такая утилита отсутствует, в отличие от настольного Linux или Windows. Благо, что разработчики не едят хлеб даром и ими уже создано множество эмуляторов терминала. Один из них — Android Terminal Emulator. Давайте узнаем о нём подробнее.
Что представляет собой приложение
Приложение является полноценным эмулятором терминала Linux, поддерживает несколько окон, клавиатурные сокращения, понимает кодировку UTF-8. Оно полностью бесплатное, не имеет встроенной рекламы и всплывающих окон.
О чём стоит помнить, работая с этим эмулятором?
- требуются root-права;
- это не эмулятор игр;
- он не поможет получить root на устройстве;
- нужно знать команды Linux;
- возможно, понадобится установить Busy Box.
Приложение будет полезно для тех пользователей, которые чётко представляют, для чего им нужен терминал и хотя бы немного знают основные команды.
Настройки программы
Программа доступна в Play Market по ссылке https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=ru. Меню доступно на многих языках, в том числе на русском. После запуска программы, в строке уведомлений вы увидите оповещение о том, что запущен терминальный процесс. Перейдите в настройки, которые разделены на логические группы.
Экран. Можно настроить отображение строки состояния, панели действий и выбрать ориентацию экрана.
Текст. Регулируется размер шрифта, цифровая схема и кодировка текста.
Клавиатура. Установите поведение кнопки назад, настройте сочетание клавиш и выберите аналоги некоторых компьютерных кнопок.
Командная оболочка. Можно указать обработчика команд, предоставить команды запуска, выбрать тип терминала и домашнюю папку, а также некоторые элементы поведения.
В верхней строке программы содержится всплывающий список окон, поэтому можно быстро переключаться между несколькими открытыми. Новое окно запускается нажатием на значок плюса.
Некоторые команды
adb — Отладчик Android. К мобильным устройствам можно подключать внешние накопители и устройства, эта утилита позволяет управлять ими.
am — Менеджер действий. Можно включить или выключить любое приложение или процесс.
badblocks — проверка карты памяти на наличие битых секторов.
bmgr — резервное копирование Android.
cat — просмотр содержимого файла.
chmod — изменение прав доступа к файлу.
chown — изменение владельца файла.
cmp — сравнение нескольких файлов.
cp — копирование файла.
date — отображение текущей системной даты.
dd — создание образа диска.
df — анализ свободного места в памяти.
dmesg — просмотр лога ядра.
du — просмотр размера файла.
ext4_resize — изменение размера раздела в файловой системе ext4 (требуется root).
fsck_msdos — проверка ошибок на карте памяти.
grep — фильтрация текста.
ifconfig — просмотр сетевых устройств и управление ими (требуется root).
iptables — настройки файервола.
kill — убить процесс по его числовому идентификатору.
ln — ссылка на файл или папку.
log — записать строку в системный лог.
logcut — просмотр системного лога в реальном времени.
ls — просмотр содержимого директории.
lsmod — отображение запущенных модулей ядра.
lsof — отображение открытых файлов.
make_ext4fs — форматирование карты памяти в формат ext4.
md5 — контрольная сумма файла.
mkdir — создание папки в каталоге.
make2fs — форматирование карты памяти в формат ext2.
mount — монтирование диска, образа или папки.
mv — перемещение файла.
netcfg — информация об интернет-соединениях.
notify — слежение за изменениями в файловой системе.
ping — проверка доступности удалённого сервера.
pm — пакетный менеджер Android, можно полностью управлять установленными приложениями.
ps — отображение информации о запущенных процессах.
reboot — перезагрузка устройства.
resize2fs — изменение размера каталога.
rm — удаление файла.
rmdir — удаление папки.
route — управление таблицей маршрутизации.
touch — создание пустого файла.
top — список запущенных процессов.
screenshot — скриншот экрана (требуется root).
shutdown — выключение аппарата.
service — управление сервисами.
Перечисленные команды далеко не все, а лишь основные. Некоторые из них требуют более глубокого изучения.
Заключение
Android Terminal Emulator — одно из лучших приложений в своём роде. Оно имеет небольшой вес и отличную функциональность. Ещё раз обращаем внимание — если вы не до конца осознаёте, что такое командная консоль Linux и для чего она предназначается, лучше займитесь изучением официальной документации.
Вас устраивает работа этой прекрасной системной утилиты? Какие команды вы используете в своей работе? Будем благодарны за ваши ценные комментарии.
При подготовке материала использовались источники:
https://habr.com/ru/articles/336348/